分類: ANDROID教程 2011-06-10 11:13 201人閱讀 評論(0) 收藏 舉報
1、 資源包括:文本字符串、圖像和圖標、音頻文件、視頻和其他應用程序使用的組件。
2、 在Android工程中,Android資源文件是同Java類文件分開存儲的,大多數常見的資源類型存儲在XML中。你也可以將原始數據文件和圖形作爲資源來存儲。
3、 Eclipse下默認的Android資源目錄
資源子目錄 |
說明 |
/res/drawable |
圖形資源 |
/res/layout |
用戶界面資源,Widget |
/res/values |
簡單數據,如字符串、顏色值 |
說明:當你向工程資源目錄/res中加入新的資源時,插件將會探測到並自動使用AAPT工具在後臺編譯這一資源,以便能在應用程序中訪問它。
4、 資源文件的類型
資源文件存儲在Android工程的/res目錄下,並且嚴格(理由充分時可以更改)存儲於各自的子目錄和文件中。資源文件的名稱必須爲小寫且要求簡單(僅由字母、數字和下劃線構成)
資源類型 |
所需目錄 |
文件名 |
適合的關鍵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/ |
例如:img.png、img.jpg、等 |
支持的圖形文件或xml文件定義的drawable圖形 |
動畫序列(補間) |
/res/anim/ |
如:fancy_animl.xml、 more_options.xml |
<set><alpha><scale> <translate><rotate> |
菜單文件 |
/res/menu/ |
如、my_menu1.xml |
<menu> |
XML文件 |
/res/xml/ |
如、some.xml |
由開發人員自己定義 |
原始文件 |
/res/raw/ |
如、some_audio.mp3 main_video.mp4、some_text.txt |
|
佈局文件 |
/res/layout/ |
如、start_screen.xml |
多種定義 |
樣式和主題 |
/res/values/ |
styles.xml、themes.xml |
<style> |
注意:某些資源文件,如:動畫文件和圖形,是根據它們自己的文件名來引用的,所以要適當地對它們進行命名。R.drawable.flag
5、 存儲不同的資源文件時,需要注意事項:
1> 存儲String類型的文件。每一個xml文件都要包含:
<?xml version="1.0" encoding="utf-8"?> <resources> 裏面可以是:<string>、<color>等 </resources> |
2> 存儲圖形、動畫、菜單和文件
可以圖形、動畫、菜單、文件任意的xml文件和原始文件作爲資源來存儲,這些資源不存儲在/res/values/下,而是存儲在不同的文件夾下。
6、 引用資源文件
String myString = getResources().getString(R.string.string標籤標籤name屬性的名字); int myColor = getResources().getColor(R.color.color標籤name屬性的名字); float myDimen = getResources().getDimension(R.dimen.dimen標籤name屬性的名字); |
1> 使用String(字符串)的資源
在xml文件中使用String資源時,在包含撇號或單引號的字符串需要進行轉移或使用雙引號括起來。
strings.xml格式如下
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, MainActivity!</string> <string name="app_name">開始學習Android知識</string> </resources> |
(1)、對於字符串資源,可以加入三種具有HTML風格的屬性:<b>、<i>、<u>分別表示加粗、斜線和下劃線。
<string name="txt"><b>加粗</b>,<i>斜線</i>、<u>下劃線</u></string>
(2)、使用格式化的字符串
創建帶有格式化的字符串,但是你需要 加粗、斜體和下劃線進行轉義。
<string name="winLose">Score:%1$d of %2$d! You %3$d.</string>
<string name="winLoseStyled">Score: %1$d of %2$d ! you <i>%3$s & lt/i>.</string>
引用:
使用下面的格式的格式會將HTML風格屬性從字符串中被剔除
String myStrHello = getResources().getString(R.string.txt);
CharSequence myBoldStr = getResources().getText(R.string.hello);
載入一個格式化得字符串(需要確保所有的格式變量都已經被轉義):
String resultText = String.format(myStrHello, 5,5,escapeWin);
在Activity中引用字符串數組:
strings.xml文件中的內容:
<string-array name="flavors"> <item>Vanilla</item> <item>Chocolate</item> <item>Strawberry</item> </string-array> |
Activity中的代碼:String aFlavors[] = getResources().getStringArray(R.array.flavors);
2> 使用顏色(RGB顏色值)
RGB顏色值始終以”#”開頭,另外可以給出alpha控制透明度,
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="text_color">#F00</color> </resources> |
顏色資源事實上是一個整數。
測量單位 |
說明 |
所需的資源標記 |
示例 |
像素 |
實際的屏幕像素 |
px |
20px |
英寸 |
物理測量單位 |
in |
2in |
毫米 |
物理測量單位 |
mm |
2mm |
點 |
普通字體測量單位 |
pt |
14pt |
密度獨立像素(density-independent pixels) |
相對於160dpi屏幕的像素 |
dp |
2dp |
比例獨立像素(scale-independent pixels) |
對於字體顯示的測量 |
sp |
14sp |
注意:英寸是長度單位。1 英寸= 2.539999918 釐米(公分)。
尺寸資源實際上是最簡單的浮點值。
float myDimen = getResources().getDimension(R.dimen.dimen標籤name屬性的名字);
4> 使用簡單的Drawable資源
使用Drawable資源類指定一個簡單的帶顏色矩形。
<?xml version="1.0" encoding="UTF-8"?> <resources> <drawable name="red_rect">#F00</drawable> </resources> |
引用:
ColorDrawable myDraw = (ColorDrawable)getResources().getDrawable(R.drawable.red_rect);
5> 使用圖像
支持的圖像 |
說明 |
擴展名 |
便攜式網絡圖像 |
推薦的格式(無損) |
.png |
9格拉伸圖像 |
推薦的格式(無損) |
.9.png |
聯合圖像專家組 |
可接受的格式(有損) |
.jpg .jpeg |
圖形交換格式 |
不鼓勵的格式 |
.gif |
(1) 使用9格拉伸圖像
手機屏幕擁有各種不同的尺寸,想象一個可以根據不同的屏幕尺寸和方向或者不同長度的文字調整大小的圖像。它是非常方便而適用。
使用步驟:
A、運行 Android SDK Tools --àdraw9patch.bat文件
B、將一個png文件拖入左側的面板中
C、選中左側底部的Show patches【斑點】
D、將Patch scale設置爲合適的值(比能夠看見標記結果值稍大)
E、沿着圖像的右邊沿單擊,以設置水平“格”引導
F、沿着圖像的上邊沿單擊,以設置垂直“格”引導
G、在右側面板中查看結果,移動“格”導引知道圖像按照預期的結果進行拉伸。
H、要刪除一個“格”導引,按住“Shift”鍵在導引的像素(黑色)上點擊即可。
I、.9.png爲擴展名保存圖像。
(2)通過程序引用
圖像資源(BitmapDrawable):通過ID即可設定用戶界面Widget的屬性。
A、如果你把flag.png放入/res/drawable目錄中,並且向主佈局中加入ImageView Widget
ImageView flagImageView = (ImageView)findViewById(R.id.imageView01);
flagImageView.setImageResource(R.drawable.icon);
B、直接訪問BitmapDrawable對象
BitmapDrawable bitmapFlag = (BitmapDrawable)getResources().getDrawable(R.drawable.icon);
int iBitmapHeightInPixels = bitmapFlag.getIntrinsicHeight();
int iBitmapWidthInPixels = bitmapFlag.getIntrinsicWidth();
C、使用九格圖像
調用getDrawable方法返回一個NinePatchDrawable對象。
和BitmapDrawable使用類似
6> 使用菜單