android里的資源可以是一個(gè)文件(mp3,視頻、音頻)或者是一個(gè)值(一個(gè)對(duì)話框中的一個(gè)標(biāo)題),這些值被綁定到一個(gè)可執(zhí)行的應(yīng)用程序。
這些文件和值被綁定到應(yīng)用程序,你可以修改它們,但是不需要重新編譯和重新部署應(yīng)用程序。
android是一個(gè)平臺(tái),一個(gè)框架,這個(gè)框架包含許多資源,string、color、bitmap、style等。android的AAPT會(huì)自動(dòng)為這些文件建立一個(gè)ID,在程序中就可以以使用這些ID來(lái)引用這些resources,如果你想改某個(gè)值,只需要修改這些resource而不需要修改源代碼。
resources的使用resoureces就是res目錄下的那些目錄和文件,常用的有:
res/drawable/ 用來(lái)存放圖片文件
res/layout/ 用來(lái)存放布局定義文件
res/values/ 用來(lái)存放一些變量、參數(shù)等文件
android允許你定義多個(gè)string xml文件 這些resource位于/res/value目錄下,文件名是任意的
這是一個(gè)普通的字符串資源文件
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="hello">Hello World, SendMessage!</string>
- <string name="app_name">SMS</string>
- </resources>
<?xml version="1.0" encoding="utf-8"?><resources><string name="hello">Hello World, SendMessage!</string><string name="app_name">SMS</string></resources>
當(dāng)這個(gè)文件被創(chuàng)建或修改了,eclipse的adt插件會(huì)自動(dòng)更新你源代碼中一個(gè)叫R.java的文件
R.java
在R.java的注釋部分, 有這樣一段話:“AUTO-GENERATE FILE. DO NOTMODIFY”,這個(gè)文件是自動(dòng)生成的,不要修改。
這個(gè)文件是在程序編譯過(guò)程中由aapt(Android Asset Packaging Tool) 自動(dòng)生成
這個(gè)文件中的屬性都是public staticfinal的,所以可以直接在Java代碼中引用,每個(gè)屬性都代表一個(gè)資源,看起來(lái)就像為每個(gè)資源都定義了一個(gè)ID,然后通過(guò)這個(gè)ID來(lái)訪問(wèn)資源
所有的資源文件都被編譯進(jìn)最后生成的二進(jìn)制包中,這樣能夠帶來(lái)很高的性能和效率
string的定義非常簡(jiǎn)單
- <string name="key">value</string>
<string name="key">value</string>
value可以只普通的字符串也可以是html代碼,或者是包含單引號(hào),雙引號(hào)的字符串
- <string name="quoted_string">"quoted'string"</string>
- <string name="double_quoted_string">\"double quotes\"</string>
- <string name="target_string">hello <b><i>android</i></b>,you are very younger!</string>
<string name="quoted_string">"quoted'string"</string><string name="double_quoted_string">\"double quotes\"</string><string name="target_string">hello <b><i>android</i></b>,you are very younger!</string>
在其他的android xml文件中引用含有html標(biāo)記的值和引用普通的string一樣
- <TextView android:text="@string/target_string"
- android:id="@+id/text3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"></TextView>
<TextView android:text="@string/target_string"android:id="@+id/text3"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView>
在java程序中應(yīng)用這些值可以這樣
- this.getResources().getString(R.string.target_string);
this.getResources().getString(R.string.target_string);
dimension resources
android中定義的dimension單位有以下這些
px: pixel(像素)
in:inches(英寸)
mm:millimeter(毫米)
pt:point(點(diǎn))
dp:density密度
sp:刻度
定義dimension可定義string一樣
- <resources>
- <dimen name="mysize_in_pixels">1px</dimen>
- <dimen name="mysize_in_dp">1dp</dimen>
- <dimen name="medium_size">100sp</dimen>
-
- </resources>
<resources><dimen name="mysize_in_pixels">1px</dimen><dimen name="mysize_in_dp">1dp</dimen><dimen name="medium_size">100sp</dimen></resources>
你可以在style中或者定位android UI 中使用這些dimension資源
如果在java中需要使用這些dimensions可以調(diào)用getResources方法
- this.getResources().getDimension(R.dimen.mysize_in_pixels);
this.getResources().getDimension(R.dimen.mysize_in_pixels);
在ml文件中使用dimension
- <TextView android:text="@string/target_string"
- android:id="@+id/text3"
- android:layout_width="wrap_content"
- android:textSize="@dimen/medium_size" android:layout_height="wrap_content"></TextView>
<TextView android:text="@string/target_string"android:id="@+id/text3"android:layout_width="wrap_content"android:textSize="@dimen/medium_size" android:layout_height="wrap_content"></TextView>
Image resourceandroid會(huì)為每個(gè)放置在res/drawable目錄下的圖片文件生成ID,ID就是這個(gè)圖片的文件名,如果一個(gè)圖片的名是sample.gif那么就會(huì)在R.java文件中的drawable下生成
- public static final int sample=0x7f020001;
public static final int sample=0x7f020001;
android支持的圖片格式有:gif,jpg,png
在xml文件中使用image resource
-
- <Button android:text="Button01"
- android:id="@+id/Button01"
- android:layout_width="wrap_content"
- android:background="@drawable/sample"
- android:layout_height="wrap_content"></Button>
<Button android:text="Button01"android:id="@+id/Button01"android:layout_width="wrap_content"android:background="@drawable/sample"android:layout_height="wrap_content"></Button>
在java文件中通過(guò)調(diào)用getResources的getDrawable方法
- Drawable bitmap = this.getResources().getDrawable(R.drawable.sampe);
- Button button = (Button)findViewById(R.id.Button01);
-
- button.setBackgroundDrawable(bitmap);
Drawable bitmap = this.getResources().getDrawable(R.drawable.sampe);Button button = (Button)findViewById(R.id.Button01);//給button設(shè)置一個(gè)背景圖button.setBackgroundDrawable(bitmap);
在android中image是drawable資源的一種類(lèi)型,android還支持其他的drawable
它叫color-drawable,它本質(zhì)上是一個(gè)彩色矩形
它的定義如下
- <resources>
- <drawable name="red_rectangle">#f00</drawable>
- <drawable name="blue_rectangle">#0000ff</drawable>
- <drawable name="green_rectangle">#f0f0</drawable>
- </resources>
<resources><drawable name="red_rectangle">#f00</drawable><drawable name="blue_rectangle">#0000ff</drawable><drawable name="green_rectangle">#f0f0</drawable></resources>
Java中使用color-drawable
-
- ColorDrawble redDrawable =
- (ColorDrawable)getResources().getDrawable(R.drawable.red_rectnagle);
-
- textView.setBackground(redDrawable);
// 取得drawableColorDrawble redDrawable =(ColorDrawable)getResources().getDrawable(R.drawable.red_rectnagle);//設(shè)置textView的背景textView.setBackground(redDrawable);
xml中使用color-drawable
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textAlign="center"
- android:background="@drawable/red_rectangle"/>