Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 4.0 開發者指南(28) —— Resource Types - More Types

Android 4.0 開發者指南(28) —— Resource Types - More Types

編輯:Android開發實例

前言

  本章內容為Android開發者指南的Framework Topics/Application Resources/Resource Types/More Types章節,譯為"更多資源類型",版本為Android 4.0 r1,翻譯來自:"呆呆大蝦"。

  

 

Resources Types – More Types

譯者署名: 呆呆大蝦

譯者微博:http://weibo.com/popapa

版本:Android 4.0 r1

 

原文

http://developer.android.com/guide/topics/resources/more-resources.html

 

更多資源類型

本頁定義了其它一些具體的資源類型,包括:

Bool

存放布爾值的XML資源。

Color

存放顏色值的XML資源(十六進制顏色)。

Dimension

存放數量值的XML資源(帶計量單位)。

ID

為應用程序的資源和控件提供唯一標識的XML資源。

Integer

存放整數值的XML資源。

Integer Array

提供整數數組的XML資源。

Typed Array

提供TypedArray(用於Drawable對象數組)的XML資源。

 

Bool

用XML格式定義的布爾值。

注意:bool是簡單類型資源,是用名稱(name)屬性(而非XML文件名)來直接引用的。因此,在一個XML文件裡,可以把bool資源和其他簡單類型資源一起放入一個<resources>元素下。

 

文件位置:

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值:

Resources res = getResources(); 

boolean screenIsSmall = res.getBoolean(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"?> 

<resources> 

    <color 

        name="color_name

        >hex_color</color> 

</resources>

 

元素:

<resources>

必填項。必須是根節點。

無屬性。

<color>

十六進制表示的顏色值。如上所述。

屬性:

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資源:

Resources res = getResources(); 

int color = res.getColor(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"?> 

<resources> 

    <dimen 

        name="dimension_name

        >dimension</dimen> 

</resources>

 

元素:

<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資源:

Resources res = getResources(); 

float fontSize = res.getDimension(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/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

String類型。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>

以下layout段將“button_ok”用於Button控件ID:

<Button android:id="@id/button_ok

    style="@style/button_style" />

注意android:id的值:ID引用裡不含加號“+”了,因為這個ID已經在上面的ids.xml中定義過了。(如果XML資源裡用加號指定一個ID—類似格式android:id="@+id/name"—那就意味著“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格式定義的整數資源。

注意:integer是簡單類型資源,是用名稱(name)屬性(而非XML文件名)來直接引用的。因此,在一個XML文件裡,可以把integer資源和其他簡單類型資源一起放入一個<resources>元素下。

 

文件位置:

res/values/filename.xml

文件名可隨意指定。<integer>元素的名稱name將用作資源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

String類型。整數的名稱。用作資源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格式定義的整數數組。

注意: integer array是簡單類型資源,是用名稱(name)屬性(而非XML文件名)來直接引用的。因此,在一個XML文件裡,可以把integer array資源和其他簡單類型資源一起放入一個<resources>元素下。

 

文件位置:

res/values/filename.xml

文件名可隨意指定。<integer-array>元素的名稱name將用作資源ID。

 

編譯後的資源數據類型:

指向整數數組的指針。

 

資源引用:

Java代碼:R.array.string_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>子元素。

屬性:

name

String類型。數組的名稱。作為資源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>

取出integer array的應用程序代碼:

Resources res = getResources(); 

int[] bits = res.getIntArray(R.array.bits);

 

Typed Array

用XML格式定義的TypedArray。用於創建其它資源的數組,比如drawable。注意數組元素不必是同一類型的,可以創建多種資源組成的數組。但必須小心處理數組內不同的數據類型,利用TypedArray的get...()屬性正確地讀取每個數據項。

注意:typed array是簡單類型資源,是用名稱(name)屬性(而非XML文件名)來直接引用的。因此,在一個XML文件裡,可以把typed array資源和其他簡單類型資源一起放入一個<resources>元素下。

 

文件位置:

res/values/filename.xml
文件名可隨意指定。<array>元素的名稱name將用作資源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

String類型。數組的名稱。作為資源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.icons); 

int color = colors.getColor(0,0);

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved