1. 程式人生 > >Android官方文件—APP資源(Resource Types) (More Types)

Android官方文件—APP資源(Resource Types) (More Types)

更多資源型別

此頁面定義了可以外部化的更多型別的資源,包括:

Bool

帶有布林值的XML資源。

Color

帶有顏色值(十六進位制顏色)的XML資源。

帶有維度值(帶有度量單位)的XML資源。

ID

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);