轉載:android 各種xml資源的引用方式
前言
本章內容為Android開發者指南的Framework Topics/Application Resources/Resource Types/More Types章節,譯為"更多資源型別",版本為Android 4.0 r1,翻譯來自:"呆呆大蝦",歡迎訪問他的微博:"http://weibo.com/popapa",再次感謝"呆呆大蝦" !期待你一起參與翻譯Android的相關資料,聯絡我[email protected]。
Resources Types – More Types
譯者署名: 呆呆大蝦
版本:Android 4.0 r1
原文
更多資源型別
本頁定義了其它一些具體的資源型別,包括:
存放布林值的XML資源。
存放顏色值的XML資源(十六進位制顏色)。
存放數量值的XML資源(帶計量單位)。
為應用程式的資源和控制元件提供唯一標識的XML資源。
存放整數值的XML資源。
提供整數陣列的XML資源。
提供(用於Drawable物件陣列)的XML資源。
Bool
用XML格式定義的布林值。
注意:bool是簡單型別資源,是用名稱(name)屬性(而非XML檔名)來直接引用的。因此,在一個
檔案位置:
res/values/filename.xml
檔名可隨意指定。<bool>元素的名稱name將被用作資源ID。
資源引用:
Java程式碼:R.bool.bool_name
XML程式碼:@[package:]bool/bool_name
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool
name="bool_name"
>[true | false]</bool>
</resources>
元素:
<resources>
必填項。必須是根節點。
無屬性。
<bool>
布林值:true或false。
屬性:
name
String型別。布林值的名稱,用作資源ID。
示例:
存放在res/values-small/bools.xml XML的檔案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="screen_small">true</bool>
<bool name="adjust_view_bounds">true</bool>
</resources>
以下應用程式程式碼取出bool值:
boolean screenIsSmall = res.(R.bool.screen_small);
以下佈局(layout)XML將bool資源用於屬性:
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@drawable/logo"
android:adjustViewBounds="@bool/adjust_view_bounds" />
Color
用XML格式定義的顏色值。用RGB值和alpha通道指定顏色值。可以在任何接受十六進位制顏色值的地方使用color資源。還能在XML裡用到drawable資源時使用color 資源(比如:android:drawable="@color/green")。
顏色值總是以(#)字元開頭,後面跟著Alpha-紅-綠-藍資訊,格式如下之一:
·#RGB
·#ARGB
·#RRGGBB
·#AARRGGBB
注意:color是簡單型別資源,是用名稱(name)屬性(而非XML檔名)來直接引用的。因此,在一個XML檔案裡,可以把color資源和其他簡單型別資源一起放入一個<resources>元素下。
檔案位置:
res/values/colors.xml
檔名可隨意指定。<color>元素的名稱name將被用作資源ID。
資源引用:
Java程式碼:R.color.color_name
XML程式碼:@[package:]color/color_name
語法:
<?xml version="1.0" encoding="utf-8"?>
name="color_name"
>hex_color</color>
</resources>
元素:
必填項。必須是根節點。
無屬性。
十六進位制表示的顏色值。如上所述。
屬性:
name
String型別。顏色的名稱,用作資源ID。
示例:
存放在res/values/colors.xml的XML檔案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
以下應用程式程式碼取出color資源:
int color = res.(R.color.opaque_red);
以下佈局(layout)XML將color資源用於屬性:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Dimension
用XML格式定義的數量值。數量值是用數字後跟度量單位來指定的。例如:10px, 2in, 5sp。Android支援以下度量單位:
dp
解析度無關的畫素(Pixel)單位,一種基於螢幕的物理(畫素)解析度的抽象單位。此單位基於一個160 dpi(每英寸點數)的螢幕,所以160dp常常是1英寸且與螢幕畫素解析度無關。dp和畫素的比率會隨著螢幕密度而變化,但不一定成正比。建議用於在layout裡指定View尺寸 ,這樣UI在不同螢幕上能自動縮放而顯示出相同的大小。(“dip”和“dp”同義,編譯器都可接受,雖然“dp”更近似於“sp”。)
sp
縮放無關的畫素單位,類似於dp,但還會根據使用者的字型大小設定進行縮放。建議用於指定字型大小,這樣根據螢幕解析度和使用者設定都能自動調整。
pt
點,基於螢幕實際尺寸,對應1/72英寸。
px
畫素,與螢幕實際畫素一致。這是個不建議使用的單位,因為在不同裝置上的實際表現會差異很大,每種裝置每英寸的畫素數可能不同,螢幕上的總畫素數亦可能更多或更少。
mm
毫米,基於螢幕物理尺寸。
in
英寸,基於螢幕物理尺寸。
注意:dimension是簡單型別資源,是用名稱(name)屬性(而非XML檔名)來直接引用的。因此,在一個XML檔案裡,可以把dimension資源和其他簡單型別資源一起放入一個<resources>元素下。
檔案位置:
res/values/filename.xml
檔名可隨意指定。<dimen>元素的名稱name將被用作資源ID。
資源引用:
Java程式碼:R.dimen.dimension_name
XML程式碼:@[package:]dimen/dimension_name
語法:
<?xml version="1.0" encoding="utf-8"?>
name="dimension_name"
>dimension</dimen>
</resources>
元素:
必填項。必須是根節點。
無屬性。
<dimen>
度量值,用浮點數表示,後跟一個計量單位(dp、sp、pt、px、mm、in),如上所述。
屬性:
name
String型別。度量的名稱,用作資源ID。
示例:
存放在res/values/dimens.xml的XML檔案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textview_height">25dp</dimen>
<dimen name="textview_width">150dp</dimen>
<dimen name="ball_radius">30dp</dimen>
<dimen name="font_size">16sp</dimen>
</resources>
以下應用程式程式碼取出dimension資源:
float fontSize = res.R.dimen.font_size);
以下layout XML將dimensions用於屬性:
<TextView
android:layout_height="@dimen/textview_height"
android:layout_width="@dimen/textview_width"
android:textSize="@dimen/font_size"/>
ID
用XML格式定義的資源唯一ID。對應<item>元素裡指定的名稱,Android開發工具在R.java類中建立一個唯一的整數。可用來標識應用程式資源(比如:UI佈局中的一個View),或者在應用程式程式碼中被用作一個唯一的整數(比如:對話方塊的ID或一個返回值)。
注意:ID是簡單型別資源,是用名稱(name)屬性(而非XML檔名)來直接引用的。因此,在一個XML檔案裡,可以把ID資源和其他簡單型別資源一起放入一個<resources>元素下。而且,請記住ID資源不代表一個實際的資源項,而只是一個可與其他資源繫結的唯一ID,或是一個用於應用程式程式碼中的唯一整數。
檔案位置:
res/