Android應(yīng)用資源的學(xué)習(xí)

最近發(fā)現(xiàn)自己在開(kāi)發(fā)的過(guò)程中還有很多東西都不懂,所以決定從今晚開(kāi)始重新學(xué)習(xí)android基礎(chǔ),今晚學(xué)習(xí)android應(yīng)用資源并記錄自己的學(xué)習(xí)筆記,方便自己以后查看

學(xué)習(xí)android這段時(shí)間,覺(jué)得android應(yīng)用程序可以分為以下三大類
  • ** 界面布局文件: ** xml文件,文件中每個(gè)標(biāo)簽都對(duì)應(yīng)于相應(yīng)的view標(biāo)簽
  • ** Java源文件:** 應(yīng)用中的Activity 、Service 、BroadcastService 、ContentProvider四大組件都是采用java代碼實(shí)現(xiàn)的
  • 資源文件: 主要以各種xml文件為主,還有包括 *.png*. jpg*.gif圖片資源和一些音頻文件、視頻文件資源
1、應(yīng)用資源概述
  • android應(yīng)用資源可以分為兩大類
    • 無(wú)法通過(guò)R資源清單類訪問(wèn)的原生資源,保存在assets目錄下
    • 可以通過(guò)R資源清單類訪問(wèn)的資源,保存在res目錄下
  • android不同資源在res目錄下的存儲(chǔ)方式
目錄 存放的資源
/res/animator/ 存放定義屬性動(dòng)畫(huà)的XML文件
/res/anim/ 存放定義補(bǔ)間動(dòng)畫(huà)的XML文件
/res/color/ 存放定義不同狀態(tài)下顏色列表的XML文件
/res/drawable/ 存放各種位圖文件(如*.png *.9.png *.jpg *.gif)等。除此之外,也可能是編譯成如下各種Drawable對(duì)象的XML文件:BimapDrawable對(duì)象、NinePatchDrawable對(duì)象、StateListDrawable對(duì)象、ShapeDrawable對(duì)象、AnimationDrawable對(duì)象、Drawable的其他各種子類的對(duì)象
/res/layout/ 存放各種用戶界面的布局文件
/res/menu/ 存放為應(yīng)用程序定義各種菜單的資源,包括選項(xiàng)菜單、子菜單、上下文菜單資源
/res/raw/ 存放任意類型的原生資源(比如資源文件、視頻文件等),在java代碼中可通過(guò)調(diào)用Resource對(duì)象的openRawResource(int id)方法來(lái)獲取該資源的二進(jìn)制輸入流。實(shí)際上,如果應(yīng)用程序需要使用原生資源,也可把這些原生資源保存到/assets/目錄下,然后在應(yīng)用程序中使用AssetManager來(lái)訪問(wèn)這些資源
/res/values/ 存放各種簡(jiǎn)單值的XML文件。這些簡(jiǎn)單值包括字符串值、整數(shù)值、顏色值、數(shù)組等 ,這些資源文件等根元素都是</resources.../>,為該<resources.../>元素添加不同的子元素則代表不同的資源,例如:** 1.string/integer/bool子元素:代表添加一個(gè)字符串值、整數(shù)值或boolean值; 2.color子元素:代表添加一個(gè)顏色值;3.array子元素或string-array、int-array子元素:代表添加一個(gè)數(shù)組;4.style子元素:代表添加一個(gè)樣式;5.dimen:代表添加一個(gè)尺寸** 為了方便以后的編寫(xiě),使用不同的文件來(lái)存放不同類型的值:** arrays.xml定義數(shù)組資源;colors.xml定義顏色值資源;dimens.xml定義尺寸值資源;strings.xml定義字符串資源;styles.xml:定義樣式資源**
/res/xml/ 存放任意的原生XML文件。這些XML文件可以在java代碼中使用Resources.getXML()方法進(jìn)行訪問(wèn)
2.使用資源
  • ** 在java代碼中使用資源清單項(xiàng) **
    由于android sdk會(huì)在編譯應(yīng)用時(shí)在R類中為/res/目錄下所有資源創(chuàng)建索引,所以在java代碼中訪問(wèn)資源主要通過(guò)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代碼中訪問(wèn)實(shí)際資源 **
    借助android提供的Resources類來(lái)完成訪問(wèn)實(shí)際資源,Resources類主要提供了如下兩種方法:

getXxx(int id): 根據(jù)資源清單id來(lái)獲取實(shí)際資源
getAssets(): 獲取訪問(wèn)/assets/目錄下資源的AssetManager對(duì)象
Resources實(shí)例由Context.getResources()方法來(lái)獲取。

代碼如下

//直接調(diào)用Activity的getResources()方法來(lái)獲取Resources實(shí)例對(duì)象
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文件中使用資源
  • 在一個(gè)文件定義來(lái)兩種資源,代碼如下
<?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"/>

** 時(shí)間不早了,寫(xiě)著寫(xiě)著就到凌晨一點(diǎn)了,覺(jué)得自己今晚效率挺低的,一晚上才學(xué)了一點(diǎn)東西,明晚繼續(xù)編寫(xiě)android應(yīng)用資源的相關(guān)知識(shí)。深夜里感覺(jué)全世界都安靜了,去刷牙背完單詞該睡覺(jué)了,努力什么都會(huì)有的,加油!**

夜深
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容