少壯不努力,老大徒傷悲
- 《長歌行》 漢樂府html
Android應用程序主要由兩部份內容組成:代碼和資源。資源是代碼使用的附加文件和靜態內容,例如位圖,佈局,用戶界面字符串,動畫指令等。 咱們應始終將應用程序資源和代碼分離來,這給咱們帶來了如下幾個好處:java
外部化應用程序資源後,可使用項目R類中生成的資源ID訪問它們。本文主要介紹如何在Android項目中對資源進行分組,爲特定設備配置提供備用資源或是訪問它們等其餘內容將在後續的文章介紹。android
Android應用程序資源能夠分爲兩大類,分別是assets和res:數組
AssetManager am= getAssets();
InputStream is = assset.open("filename");
複製代碼
MyProject/
src/
MyActivity.java
res/
drawable/
graphic.png
layout/
main.xml
info.xml
mipmap/
icon.png
values/
strings.xml
複製代碼
咱們須要將每種類型的資源放在項目res/目錄的特定子目錄中,資源目錄名稱很重要,以下表所示:bash
目錄 | 資源類型 |
---|---|
animator/ | 定義屬性動畫(property animations.)的 XML文件; |
anim/ | 定義補間動畫(tween animations)的XML文件。(屬性動畫也能夠保存在此目錄中,但屬性動畫應首選animator/目錄以區分這兩種類型); |
color/ | 定義顏色狀態列表的XML文件。可參考 顏色狀態列表資源; |
drawable/ | 位圖文件(.png,.9.png,.jpg,.gif)或可編譯成如下可繪製資源子類型的XML文件:Bitmap files、Nine-Patches (re-sizable bitmaps)、State lists、Shapes、Animation drawables等,更多請查看Drawable Resources; |
mipmap/ | 用於存儲啓動圖標(不一樣密度)的可繪製文件(drawable) |
layout/ | 定義用戶界面佈局的XML文件 |
menu/ | 定義應用程序菜單的XML文件,例如「選項菜單」,「上下文菜單」或「子菜單」; |
raw/ | 這類資源以任意格式的文件保存在res/raw目錄下。你能夠經過(InputStream)Resources.openRawResource(R.raw.filename)打開raw文件; 可是,若是須要訪問原始文件名和文件層次結構,能夠考慮在assets/目錄中保存一些資源(而不是res/raw/)。文件中assets/沒有給出資源ID,所以您只能經過AssetManager去訪問它們。 |
values/ | 包含簡單值的XML文件,例如字符串,整數和顏色。 除了values/目錄外其餘 res/下的目錄的XML資源文件都是基於XML文件名定義單個資源,而values/下的xml資源文件則是描述多個資源。 對於values/中的xml文件,該 < resources > 元素下的每一個子元素都定義一個資源。例如,< string >元素建立 R.string資源,< color >元素建立R.color 資源。 因爲每一個資源都使用本身的XML元素定義,所以您能夠根據須要爲文件命名,並將不一樣的資源類型放在一個文件中。可是,爲清楚起見,您可能但願將不一樣的資源類型放在不一樣的文件中。例如,如下是您能夠在此目錄中建立的資源的一些文件名約定: array.xml --- 用於資源數組(類型化數組); colors.xml --- 用於顏色值; dimens.xml --- 用於維度值; strings.xml --- 用於字符串值; styles.xml --- 用於樣式。 |
xml/ | 在運行時能夠經過Resources.getXML()讀取的任意XML文件。各類XML配置文件必須保存在這裏; |
font/ | 字體文件與擴展如 .ttf,.otf,或.ttc,其中包括一個< font-family >元素的XML文件; |
永遠不要將資源文件直接保存在 res/目錄中 - 它會致使編譯器錯誤ide
上述11種類型(不含assets)的資源文件,除了raw類型資源,以及Bitmap文件的drawable類型資源以外,其它的資源文件均爲文本格式的XML文件,它們在打包的過程當中,會被編譯成二進制格式的XML文件,每個res資源在編譯的打包完成以後,都會被分配一個資源ID,這些資源ID被終會被定義爲Java常量值,保存在一個R.java文件中,與應用程序的其它源文件一塊兒被編譯到程序中,這樣咱們就能夠在程序或者資源文件中經過這些ID常量來訪問指定的資源。佈局
下表是每種類型的簡短摘要,後續會陸續補充項目資源目錄(res/)中提供的特定類型的應用程序資源的用法、格式和語法:字體
資源類型 | 簡短摘要 |
---|---|
動畫資源 | 定義預約動畫,含屬性、補間、逐幀動畫。屬性動畫保存在res/animator/目錄並從R.anim類中訪問,補間動畫保存在res/anim/目錄並從R.anim類中訪問,幀動畫保存在res/drawable/目錄並從R.drawable類中訪問,更多請查看Animation Resources |
顏色狀態列表資源 | 定義基於View狀態更改的顏色資源,保存在res/color/目錄並從R.color上訪問。更多請查看Color State List Resource |
drawable | 使用位圖或XML定義各類圖形,保存在res/drawable/目錄並從R.drawable上訪問。更多請查看Drawable Resources |
佈局資源 | 定義應用程序UI的佈局,保存在res/layout目錄並從R.layout上訪問。更多請查看Layout Resource |
菜單資源 | 定義應用程序菜單的內容,保存在res/menu目錄並從R.menu上訪問。更多請查看Menu Resource |
字符串資源 | 定義字符串,字符串數組和複數(包括字符串格式和樣式),保存在res/values目錄並從R.string,R.array以及R.plurals上訪問。更多請查看String Resources |
style | 定義UI元素的外觀和格式,保存在res/value目錄並從R.style上訪問。更多請查看Style Resource |
字體資源 | 定義字體系列並在XML中包含自定義字體,保存在res/font目錄並從R.font上訪問。更多請查看Font Resources |
更多資源類型 | 將其餘原始值定義爲靜態資源,包括如下內容: 1. Bool : 帶有布爾值的XML資源 2. Color : 帶有顏色值(十六進制顏色)的XML資源 3.Dimension : 帶有維度值(帶有度量單位)的XML資源 4. ID : XML資源,爲應用程序資源和組件提供惟一標識符 5. Integer : 包含整數值的XML資源 6. Integer Array : 提供整數數組的XML資源 7. Typed Array : 提供TypedArray(可用於drawable數組)的XML資源源 更多請查看More resource types |