編輯:高級開發
這一小節將學習如何組織應用程序資源,指定替代資源,並在應用程序訪問它們。
將每種類型的資源在一個特定項目的 res/目錄的子目錄。例如,這裡有一個簡單的項目文件層次:
MyProject/ src/ MyActivity.java res/ drawable/ icon.png layout/ activity_main.xml info.xml values/ strings.xml
res/目錄中包含不同的子目錄的不同資源。在這裡有一個圖像資源,兩個布局資源和一個字符串資源文件。下表給出了詳細的項目在 res/目錄裡面支持的資源。
arrays.xml資源數組,並可從R.array類訪問
integers.xml資源整數,並可從R.integerclass訪問
bools.xml資源布爾型,並可從R.bool類訪問
colors.xml為顏色值,並可從R.color類訪問
dimens.xml為維度值,並可從R.dimen類訪問
strings.xml為字符串值,並且可從R.string類訪問
styles.xml為樣式並可從R.style類訪問
應用程序提供替代資源以支持特定的設備配置。例如,包括替代繪制資源(ie.images),針對不同的語言不同的屏幕分辨率並替代字符串資源。在運行時Android 檢測當前設備的配置,並為應用程序加載適當的資源。
要指定一組資源的配置具體的替代,請遵循以下步驟:
創建新目錄在res/ 目錄下,命名形式如 <resources_name>-<config_qualifier>。這裡resources_name 是在上表中提到的資源,如layout,drawable 等限定符將指定一個單獨的配置,要使用這些資源。可以查看官方文檔的完整列表,限定符為不同類型的資源。
在這個新的目錄中保存相應的替代資源。資源文件必須被命名為默認的資源文件,如下面的例子所示的完全一樣,但這些文件具有特定內容的替代。例如,雖然圖像的文件名是相同的,但對高分辨率屏幕,其分辨率會很高。
下面是一個例子,它指定一個默認的屏幕和高分辨率屏幕的替代圖像的圖像。
MyProject/ src/ MyActivity.java res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png layout/ activity_main.xml info.xml values/ strings.xml
下面是另一個例子,指定一種默認語言為阿拉伯語並指定替代布局。
MyProject/ src/ MyActivity.java res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png layout/ activity_main.xml info.xml layout-ar/ main.xml values/ strings.xml
在應用程序開發中,需要訪問定義的資源,無論是在代碼還是在布局XML文件。下面的部分介紹了如何訪問資源在這兩個場景:
當Android應用程序被編譯時,會產生一個R類,其中包含在res/ 目錄中的所有可用資源的資源ID。使用R類直接訪問該子目錄和資源名稱或資源ID。
要訪問 res/drawable/myimage.png,並設置一個ImageView 可使用下面的代碼:
ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage);
下面第一行代碼,使用R.id.myimageview id 為myimageview定義布局文件。第二行代碼使用 R.drawable.myimage 得到的圖像名稱myimage ,在 /res子目錄下。
考慮在下一個例子 res/values/strings.xml 有以下定義:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello, World!</string> </resources>
現在,可以設置一個TextView對象msg 文字使用資源ID如下:
TextView msgTextView = (TextView) findViewById(R.id.msg); msgTextView.setText(R.string.hello);
考慮一個布局res/layout/activity_main.xml 如以下的定義:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button" /> </LinearLayout>
這個應用程序代碼的一個活動將加載此布局,在onCreate()方法如下:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); }
考慮下面的XML資源res/values/strings.xml文件,包括顏色資源和一個字符串資源:
<?xml version="1.0" encoding="utf-8"?>
<resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string> </resources>
現在,可以利用這些資源,在下面的布局文件中設置文本顏色和文本字符串如下:
<?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@color/opaque_red" android:text="@string/hello" />
現在,如果將再次通過前面的章節了解,例如:Hello World!應用,將有助於更好的理解本小節介紹的概念。了解在前面的小節中是如何利用各種資源的基本操作。
android智能手機上市等因素的影響下,全球移動上網用戶和使用量正快速增長。與此同時,android的移動網絡流量市場份額也是節節攀升,iPhone占全球移動網絡流量
有以下兩種方式來使用 Android 設備發送短信:使用 SmsManager 發送短信使用內置 Intent 發送短信使用SmsManager 發送短信Sms
由於android平台本身的優勢,引來了很多手機廠商的關注。 一大堆 android 手機發售在即,開發人員向該平台投入了巨大的資源,這可能會迎來 android程序的
做出相應的處理,比如掛掉電話、比如靜音等等。 Demo 分析: 下面通過一個小DEMO 來講解一下廣播在android 中如何編寫,在Demo中我們設置了一個按鈕為