Android xml檔案裡定義並獲取string array,integer array,尺寸和顏色
如何在xml中定義資源,然後在應用中通過java程式碼引用。
檔案位置:res/values/filename.xml
< resources> 是根元素,<string-array>元素的name屬性被用作陣列資源的ID, <string-array>可以包含一個或多個<item>元素。
樣式如下:
< resources> < string-array name = " string_array_name " > < item> text_string </item> < item> text_string </item> </string-array> <integer-array name="integer_array_name"> < item> text_string </item> < item> text_string </item> </integer-array> </resources>
java程式碼獲取一個字元陣列:
String[] names = getResources().getStringArray(R.array.string_array_name);
java程式碼獲取一個整型陣列:
int[] names = getResources().getIntArray(R.array.integer_array_name);
1 定義字元陣列|定義整型陣列(一般在arrays.xml中,也可以定義在res/values/array_filename.xml,其中array_filename.xml是自定義的)
res/values/arrays.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="animals"> <item>tiger</item> <item>rabbit</item> <item>cat</item> </string-array> <integer-array name="count"> <item>12</item> <item>22</item> <item>33</item> </integer-array> </resources>
String[] animals = getResources().getStringArray(R.array.animals);
int[] nums = getResources().getIntArray(R.array.count);
2 定義顏色(一般放在colors.xml,也可以放在res/values/color_filename.xml,其中color_filename.xml是自定義的)
res/values/colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#000000</color>
</resources>
獲取顏色:
intcolor = getResources().getColor(R.color.black);
3定義尺寸(一般放在res/values/dimens.xml檔案中,但也可以在res/values/dimens_filename.xml中,其中dimens_filename.xml是自定義的)
res/valuses/dimens.xml檔案
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="height">80dp</dimen> </resources>
獲取尺寸: float height = getResources().getDimension(R.dimen.height);
4定義drawable陣列
res/values/filename.xml
<integer-array name="background_drawable">
<item>@drawable/female_pressed</item>
<item>@drawable/gd_search_marker_pressed</item>
<item>@drawable/ic_launcher</item>
<item>@drawable/male_pressed</item>
</integer-array>
或者
<string-array name="<span style="font-family: Arial, Helvetica, sans-serif;">ackground_drawable</span><span style="font-family: Arial, Helvetica, sans-serif;">"></span>
<item>@drawable/female_pressed</item>
<item>@drawable/gd_search_marker_pressed</item>
<item>@drawable/ic_launcher</item>
<item>@drawable/male_pressed</item>
</string-array>
使用<string-array>和<integer-array>宣告是一樣的,都通過以下的java程式碼獲取drawable的id。通過java程式碼獲取的程式碼如下:
TypedArray ar = getResources().obtainTypedArray(R.array.background_drawable);
final int len = ar.length();
final int[] resIds = new int[len];
for (int i = 0; i < len; i++){
resIds[i] = ar.getResourceId(i, 0);
}
ar.recycle();
使用如下方式(與獲取整型陣列的方式獲取,無法獲取到正確的結果,獲取的resIds的陣列為{0,0,0,0})。
final int[] resIds = getResources().getIntArray(R.array.background_drawable);
然後ImageView物件可以通過setImageResource方法設定圖片資源,使用方式如下:
imageView.setImageResource(resIds[0]);
另外:以上四種方式,檔名稱都可以自定義,因為通過java程式碼查詢資源的時候,使用的是屬性名稱不是檔名稱。為了便於自身查詢,有些檔案放在指定的路徑下,比如定義尺寸的儲存到res/valuses/dimens.xml。