Android官方文件—APP資源(Resource Types) (More Types)
更多資源型別
此頁面定義了可以外部化的更多型別的資源,包括:
帶有布林值的XML資源。
帶有顏色值(十六進位制顏色)的XML資源。
帶有維度值(帶有度量單位)的XML資源。
ML資源,為應用程式資源和元件提供唯一識別符號。
包含整數值的XML資源。
提供整數陣列的XML資源。
提供TypedArray的XML資源(可用於drawables陣列)。
Bool
以XML定義的布林值。
注意:bool是一個簡單的資源,使用name屬性中提供的值(而不是XML檔案的名稱)引用。因此,您可以將bool資源與一個XML檔案中的其他簡單資源組合在一個<resources>元素下。
檔案位置:
res/values/filename.xml
檔名是任意的。 <bool>元素的名稱將用作資源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>
元素:
<bool>
布林值:true或false。
屬性:
name
字串。 bool值的名稱。這將用作資源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>
此應用程式程式碼檢索布林值:
Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.screen_small);
此佈局XML使用屬性的布林值:
<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通道指定。您可以在任何接受十六進位制顏色值的地方使用顏色資源。當XML中需要可繪製資源時,您也可以使用顏色資源(例如,android:drawable =“@ color / green”)。
值始終以井號(#)開頭,然後是以下列格式之一的Alpha-Red-Green-Blue資訊:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
注意:顏色是使用name屬性中提供的值(而不是XML檔案的名稱)引用的簡單資源。因此,您可以將顏色資源與一個XML檔案中的其他簡單資源組合在一個<resources>元素下。
檔案位置:
res/values/colors.xml
檔名是任意的。 <color>元素的名稱將用作資源ID。
資源參考: 在Java中:R.color.color_name 在XML中:@ [package:] color / color_name
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name="color_name"
>hex_color</color>
</resources>
元素:
<resources>
需要。這必須是根節點。
沒有屬性。
<color>
如上所述的以十六進位制表示的顏色。
屬性:
name
字串。顏色的名稱。這將用作資源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>
此應用程式程式碼檢索顏色資源:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
此佈局XML將顏色應用於屬性:
<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
密度無關畫素 - 基於螢幕物理密度的抽象單位。這些單位相對於160 dpi(每英寸點數)的螢幕,其中1dp大致等於1px。在更高密度的螢幕上執行時,用於繪製1dp的畫素數按照適合螢幕dpi的係數放大。同樣,當在較低密度螢幕上時,用於1dp的畫素數按比例縮小。 dp與畫素的比率將隨著螢幕密度而變化,但不一定是成正比的。使用dp單位(而不是px單位)是一種簡單的解決方案,可以使佈局中的檢視尺寸適當調整以適應不同的螢幕密度。換句話說,它為不同裝置的UI元素的實際大小提供了一致性。
sp
與比例無關的畫素 - 這與dp單位類似,但它也可以根據使用者的字型大小首選項進行縮放。建議您在指定字型大小時使用此單位,以便根據螢幕密度和使用者偏好調整它們。
pt
點數 - 基於螢幕物理尺寸的1/72英寸。
px
畫素 - 對應螢幕上的實際畫素。建議不要使用此計量單位,因為實際表示可能因裝置而異;每個裝置可以具有每英寸不同數量的畫素,並且可以在螢幕上具有更多或更少的總畫素。
mm
毫米 - 基於螢幕的物理尺寸。
in
英寸 - 基於螢幕的物理尺寸
注意:維度是使用name屬性中提供的值(而不是XML檔案的名稱)引用的簡單資源。因此,您可以將維度資源與一個XML檔案中的其他簡單資源組合在一個<resources>元素下。
檔案位置:
res/values/filename.xml
檔名是任意的。 <dimen>元素的名稱將用作資源ID。
資源參考: 在Java中:R.dimen.dimension_name 在XML中:@ [package:] dimen / dimension_name
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen
name="dimension_name"
>dimension</dimen>
</resources>
元素:
<resources>
必要。這必須是根節點。
沒有屬性。
<dimen>
如上所述,由浮子表示的尺寸,接著是測量單位(dp,sp,pt,px,mm,in)。
屬性:
name
字串。維度的名稱。這將用作資源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>
此應用程式程式碼檢索維度:
Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);
此佈局XML將維度應用於屬性:
<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佈局中的檢視)或者在應用程式程式碼中使用的唯一整數(例如,作為對話方塊或結果程式碼的ID)。
注意:ID是使用name屬性中提供的值(而不是XML檔案的名稱)引用的簡單資源。因此,您可以在一個<resources>元素下將ID資源與一個XML檔案中的其他簡單資源相結合。另外,請記住ID資源不引用實際資源項;它只是一個唯一的ID,您可以將其附加到其他資源或作為應用程式中的唯一整數使用。
檔案位置:
res/values/filename.xml
檔名是任意的。
資源參考: 在Java中:R.id.name 在XML中:@ [package:] id / name
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item
type="id"
name="id_name" />
</resources>
元素:
<resources>
必要。這必須是根節點。
沒有屬性。
<item>
定義唯一ID。沒有值,只有屬性。
屬性:
type
必須是“id”。
name
字串。 ID的唯一名稱。
例子:
儲存在res / values / ids.xml的XML檔案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="button_ok" />
<item type="id" name="dialog_exit" />
</resources>
然後,此佈局程式碼段使用Button小部件的“button_ok”ID:
<Button android:id="@id/button_ok"
style="@style/button_style" />
請注意,android:id值不包含ID引用中的加號,因為ID已存在,如上面的ids.xml示例中所定義。 (當您使用加號登入為XML資源指定ID時,格式為android:id =“@ + id / name” - 這意味著“名稱”ID不存在且應該建立。)
作為另一個示例,以下程式碼段使用“dialog_exit”ID作為對話方塊的唯一識別符號
showDialog(R.id.dialog_exit);
在同一個應用程式中,建立對話方塊時會比較“dialog_exit”ID:
protected Dialog onCreateDialog(int)(int id) {
Dialog dialog;
switch(id) {
case R.id.dialog_exit:
...
break;
default:
dialog = null;
}
return dialog;
}
Integer
XML中定義的整數。
注意:整數是使用name屬性中提供的值(而不是XML檔案的名稱)引用的簡單資源。因此,您可以將整數資源與一個XML檔案中的其他簡單資源組合在一個<resources>元素下。
檔案位置:
res/values/filename.xml
檔名是任意的。 <integer>元素的名稱將用作資源ID。
資源參考: 在Java中:R.integer.integer_name 在XML中:@ [package:] integer / integer_name
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer
name="integer_name"
>integer</integer>
</resources>
元素:
<resources>
必要。這必須是根節點。
沒有屬性。
<integer>
整數。
屬性:
name
字串。整數的名稱。這將用作資源ID。
例子:
儲存在res / values / integers.xml的XML檔案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="max_speed">75</integer>
<integer name="min_speed">5</integer>
</resources>
此應用程式程式碼檢索整數:
Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);
Integer Array
XML中定義的整數陣列。
注意:整數陣列是使用name屬性中提供的值(而不是XML檔案的名稱)引用的簡單資源。因此,您可以將整數陣列資源與一個XML檔案中的其他簡單資源組合在一個<resources>元素下。
檔案位置:
res/values/filename.xml
檔名是任意的。 <integer-array>元素的名稱將用作資源ID。
編譯資源資料型別: 指向整數陣列的資源指標。
資源參考: 在Java中:R.array.integer_array_name 在XML中:@ [package:] array.integer_array_name
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array
name="integer_array_name">
<item
>integer</item>
</integer-array>
</resources>
元素:
<resources>
需要。這必須是根節點。
沒有屬性。
<integer-array>
定義整數陣列。包含一個或多個子<item>元素。
屬性:
android:name
字串。陣列的名稱。此名稱將用作引用該陣列的資源ID。
<item>
整數。該值可以是對另一個整數資源的引用。必須是<integer-array>元素的子元素。
沒有屬性。
例子:
儲存在res / values / integers.xml的XML檔案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array name="bits">
<item>4</item>
<item>8</item>
<item>16</item>
<item>32</item>
</integer-array>
</resources>
此應用程式程式碼檢索整數陣列:
Resources res = getResources();
int[] bits = res.getIntArray(R.array.bits);
Typed Array
以XML格式定義的TypedArray。您可以使用它來建立其他資源的陣列,例如drawable。請注意,陣列不需要是同類的,因此您可以建立混合資源型別的陣列,但是您必須知道陣列中資料型別的位置和位置,以便您可以使用TypedArray正確的每個專案。 get...() 方法。
注意:型別化陣列是使用name屬性中提供的值(而不是XML檔案的名稱)引用的簡單資源。因此,您可以在一個<resources>元素下將型別化陣列資源與一個XML檔案中的其他簡單資源相結合。
檔案位置:
res/values/filename.xml
檔名是任意的。 <array>元素的名稱將用作資源ID。
編譯資源資料型別: 指向TypedArray的資源指標。
資源參考: 在Java中:R.array.array_name 在XML中:@ [package:] array.array_name
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array
name="integer_array_name">
<item>resource</item>
</array>
</resources>
元素:
<resources>
需要。這必須是根節點。
沒有屬性。
<array>
定義一個數組。包含一個或多個子<item>元素。
屬性:
android:name
字串。陣列的名稱。此名稱將用作引用該陣列的資源ID。
<item>
通用資源。該值可以是對資源或簡單資料型別的引用。必須是<array>元素的子元素。
沒有屬性。
例子:
儲存在res / values / arrays.xml的XML檔案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="icons">
<item>@drawable/home</item>
<item>@drawable/settings</item>
<item>@drawable/logout</item>
</array>
<array name="colors">
<item>#FFFF0000</item>
<item>#FF00FF00</item>
<item>#FF0000FF</item>
</array>
</resources>
此應用程式程式碼檢索每個陣列,然後獲取每個陣列中的第一個條目:
Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);
TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);