特點
Android的資源檔案,覆蓋面超級廣,只要是和界面相關的,都可以用資源檔案表示,比如:UI的樣式,選單,配置檔案,各種描述性字元串,圖片,音頻視頻檔案,動畫,顏色,尺寸,風格和樣式等。
結構
Android資源檔案的一般目錄結構可以用下面的圖來表示:
使用
我們可以在代碼中直接使用資源檔案,如:
setContentView(R.layout.main);
Toast.makeText(this, R.string.app_error, Toast.LENGTH_LONG).show();
資源之間也可以互相引用,如:
attribute=”@[packagename:]resourcetype/resourceidentifier”
使用示例
resoureces就是res目錄下的那些目錄和檔案,常用的有:
res/drawable/ 用來存放圖片檔案
res/layout/ 用來存放布局定義檔案
res/values/ 用來存放一些變數、參數等檔案
android允許你定義多個string xml檔案 這些resource位於/res/value目錄下,檔案名稱是任意的
這是一個普通的字元串資源檔案
Xml代碼
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, SendMessage!</string>
<string name="app_name">SMS</string>
</resources>
當這個檔案被創建或修改了,eclipse的adt外掛程式會自動更新你原始碼中一個叫R.java的檔案
R.java
在R.java的注釋部分, 有這樣一段話:“AUTO-GENERATE FILE. DO NOT MODIFY”,這個檔案是自動生成的,不要修改。
這個檔案是在程式編譯過程中由aapt(Android Asset Packaging Tool) 自動生成
這個檔案中的屬性都是public static final的,所以可以直接在Java代碼中引用,每個屬性都代表一個資源,看起來就像為每個資源都定義了一個ID,然後通過這個ID來訪問資源
所有的資源檔案都被編譯進最後生成的二進制包中,這樣能夠帶來很高的性能和效率
string的定義非常簡單
Xml代碼 <string name="key">value</string>
value可以只普通的字元串也可以是html代碼,或者是包含單引號,雙引號的字元串
Xml代碼 <string name="quoted_string">"quoted'string"</string>
<string name="double_quoted_string">\"double quotes\"</string>
<string name="target_string">hello <b><i>android</i></b>,you are very younger!</string>
在其他的android xml檔案中引用含有html標記的值和引用普通的string一樣
Xml代碼 <TextView android:text="@string/target_string"
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
在java程式中套用這些值可以這樣
Java代碼 this.getResources().getString(R.string.target_string);
dimension resources
android中定義的dimension單位有以下這些
px: pixel(像素)
in:inches(英寸)
mm:millimeter(毫米)
pt:point(點)
dp:density密度
sp:刻度
定義dimension可定義string一樣
Xml代碼 <resources>
<dimen name="mysize_in_pixels">1px</dimen>
<dimen name="mysize_in_dp">1dp</dimen>
<dimen name="medium_size">100sp</dimen>
</resources>
你可以在style中或者定位android UI 中使用這些dimension資源
如果在java中需要使用這些dimensions可以調用getResources方法
Java代碼 this.getResources().getDimension(R.dimen.mysize_in_pixels);
在ml檔案中使用dimension
Xml代碼 <TextView android:text="@string/target_string"
android:id="@+id/text3"
android:layout_width="wrap_content"
android:textSize="@dimen/medium_size" android:layout_height="wrap_content"></TextView>