一、資源檔案的管理
所有的Android應用程式都由兩部分組成:功能代碼和資源。功能代碼決定應用程式的行為,它包括讓應用程式得以運作的所有算法。資源包括文本字元串、圖像和圖示、音頻檔案、視訊和其他應用程式使用的元件。
如果我們使用ADT開發的話,它為我們在背景自動調用AAPT編譯資源,我們就可以省了很多事。不然的話,我們得使用AAPT自己去編譯資源了。本文使用的是eclipse + ADT開發環境。資源目錄截圖圖下圖所示。
資源目錄的層級結構如下表所示,表中顯示了Android SDK支援的資源類型以及它們在工程中的存儲方式。
資源類型 | 所需的目錄 | 檔案名 | 适用的關鍵XML元素 |
字元串 | /res/values/ | strings.xml(推薦) | <string> |
字元串數組 | /res/values/ | arrays.xml(推薦) | <string-array> |
顔色值 | /res/values/ | colors.xml(推薦) | <color> |
尺寸 | /res/values/ | dimens.xml(推薦) | <dimen> |
簡單Drawable圖形 | /res/values/ | drawables.xml(推薦) | <drawable> |
位圖圖像 | /res/drawable/ | 例:.png,.jpg,red_oval.xml等等 | 支援的圖形檔案或XML檔案定義的 Drawable圖形 |
動畫序列(補間) | /res/anim/ | 例:fancy_anim.xml等等 | <set>、<alpha>、<scale>、<rotate>等 |
菜單檔案 | /res/menu/ | 例:my_menu.xml | <menu> |
XML檔案 | /res/xml/ | 例:some.xml | 由開發人員定義 |
原始檔案 | /res/raw/ | 例:xx.mp3,yy.txt等等 | |
布局檔案 | /res/layout/ | 例:main.xml等 | |
樣式和主題 | /res/values/ | 例:themes.xml | <style> |
AAPT貫穿所有在/res目錄下正确格式化的檔案,并且在目錄/gen中生成類檔案R.java,以通路所有變量。
二、資源檔案的建立
開發人員可以通過手工編寫資源的XML檔案,使用AAPT編譯它們并生成R.java檔案來定義簡單的資源,推薦使用ADT插件。
建立完工程後,在Eclipse中定位至/res/values/strings.xml檔案,輕按兩下可以編輯它。我們可以使用Resources标簽下的Add按鈕添加幾個資源。也可以切換到源檔案編輯模式。定義的如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, ActivityIntent!</string>
<string name="app_name">ActivityIntent</string>
<string name="prompt">The Activity and The Intent test!</string>
<string name="myButton">測試</string>
<string name="other">另一個Activity</string>
<string name="dialBtn">電話按鈕</string>
</resources>
儲存Strings.xml檔案。Eclipse插件講将自動在你的工程中生成R.java檔案,并含有适當的資源ID,以供編譯之後使用程式通路這些資源。如果你定位到/gen/目錄下的R.java檔案,你可以看到:
public static final class string {
public static final int app_name=0x7f040001;
public static final int dialBtn=0x7f040005;
public static final int hello=0x7f040000;
public static final int myButton=0x7f040003;
public static final int other=0x7f040004;
public static final int prompt=0x7f040002;
}
三、資源的讀取
當我們建立好資源并儲存後,我們變可以在程式用通過資源的ID來使用資源了。
比如說,我們擷取資源ID為hello的内容:
String str = getResources().getString(R.string.hello);
至于Android各個具體的資源類型的建立和使用,我們将在後續的文章中陸續介紹
(本文由“ 蘿蔔根 ”編輯撰寫,轉載請注名來源)
(本文在“ 蘿蔔根 ”和 CSDN部落格 同步釋出)