最近發(fā)現(xiàn)自己在開發(fā)的過程中還有很多東西都不懂涂邀,所以決定從今晚開始重新學(xué)習(xí)android基礎(chǔ)匈庭,今晚學(xué)習(xí)android應(yīng)用資源并記錄自己的學(xué)習(xí)筆記条篷,方便自己以后查看
學(xué)習(xí)android這段時間伤溉,覺得android應(yīng)用程序可以分為以下三大類
- ** 界面布局文件: ** xml文件妒茬,文件中每個標(biāo)簽都對應(yīng)于相應(yīng)的view標(biāo)簽
- ** Java源文件:** 應(yīng)用中的Activity 、Service 迷殿、BroadcastService 儿礼、ContentProvider四大組件都是采用java代碼實現(xiàn)的
-
資源文件: 主要以各種xml文件為主,還有包括
*.png
庆寺、*. jpg
蚊夫、*.gif
圖片資源和一些音頻文件、視頻文件資源
1懦尝、應(yīng)用資源概述
- android應(yīng)用資源可以分為兩大類
- 無法通過R資源清單類訪問的原生資源知纷,保存在assets目錄下
- 可以通過R資源清單類訪問的資源,保存在res目錄下
- android不同資源在res目錄下的存儲方式
目錄 | 存放的資源 |
---|---|
/res/animator/ | 存放定義屬性動畫的XML文件 |
/res/anim/ | 存放定義補間動畫的XML文件 |
/res/color/ | 存放定義不同狀態(tài)下顏色列表的XML文件 |
/res/drawable/ | 存放各種位圖文件(如*.png *.9.png *.jpg *.gif )等陵霉。除此之外琅轧,也可能是編譯成如下各種Drawable對象的XML文件:BimapDrawable對象、NinePatchDrawable對象踊挠、StateListDrawable對象乍桂、ShapeDrawable對象、AnimationDrawable對象效床、Drawable的其他各種子類的對象 |
/res/layout/ | 存放各種用戶界面的布局文件 |
/res/menu/ | 存放為應(yīng)用程序定義各種菜單的資源睹酌,包括選項菜單、子菜單剩檀、上下文菜單資源 |
/res/raw/ | 存放任意類型的原生資源(比如資源文件憋沿、視頻文件等),在java代碼中可通過調(diào)用Resource對象的openRawResource(int id)方法來獲取該資源的二進制輸入流沪猴。實際上辐啄,如果應(yīng)用程序需要使用原生資源,也可把這些原生資源保存到/assets/目錄下运嗜,然后在應(yīng)用程序中使用AssetManager來訪問這些資源 |
/res/values/ | 存放各種簡單值的XML文件则披。這些簡單值包括字符串值、整數(shù)值洗出、顏色值士复、數(shù)組等 ,這些資源文件等根元素都是</resources.../>,為該<resources.../>元素添加不同的子元素則代表不同的資源,例如:** 1.string/integer/bool子元素:代表添加一個字符串值翩活、整數(shù)值或boolean值阱洪; 2.color子元素:代表添加一個顏色值;3.array子元素或string-array菠镇、int-array子元素:代表添加一個數(shù)組冗荸;4.style子元素:代表添加一個樣式;5.dimen:代表添加一個尺寸** 為了方便以后的編寫利耍,使用不同的文件來存放不同類型的值:** arrays.xml定義數(shù)組資源蚌本;colors.xml定義顏色值資源盔粹;dimens.xml定義尺寸值資源;strings.xml定義字符串資源程癌;styles.xml:定義樣式資源** |
/res/xml/ | 存放任意的原生XML文件舷嗡。這些XML文件可以在java代碼中使用Resources.getXML()方法進行訪問 |
2.使用資源
- ** 在java代碼中使用資源清單項 **
由于android sdk會在編譯應(yīng)用時在R類中為/res/目錄下所有資源創(chuàng)建索引,所以在java代碼中訪問資源主要通過R類完成嵌莉,如以下代碼片段:
//從drawable資源中加載圖片进萄,并且設(shè)為該窗口的背景
getWindow.setBackgorundDrawableResource(R.drawable.back);
//從string資源中獲取字符串資源,并且設(shè)為窗口的標(biāo)題
getWindow.setText(getResources().getText(R.string.main_title));
//獲取指定的TextView組件锐峭,并設(shè)置該組件顯示string資源中的字符串資源
TextView text=(TextView)findViewById(R.id.msg);
text.setText(R.string.hello_messager);
- ** 在java代碼中訪問實際資源 **
借助android提供的Resources類來完成訪問實際資源中鼠,Resources類主要提供了如下兩種方法:
getXxx(int id): 根據(jù)資源清單id來獲取實際資源
getAssets(): 獲取訪問/assets/目錄下資源的AssetManager對象
Resources實例由Context.getResources()方法來獲取。
代碼如下
//直接調(diào)用Activity的getResources()方法來獲取Resources實例對象
Resources resources=getResources();
//獲取字符串資源
String mainTitle=resources.getText(R.string.main_title);
//獲取Drawable資源
Drawable logo=resources.getDrawable(R.drawable.logo);
//獲取數(shù)組資源
int[] arr=resources.getIntArray(R.array.books);
3.在XML文件中使用資源
- 在一個文件定義來兩種資源沿癞,代碼如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">hello world!</string>
<color name="red">#ff00></color>
</resources>
- 在XML資源文件是使用資源援雇,代碼如下
<TextView android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="@color/red"
android:text="@string/hello"/>