Android 項目中文件夾作用(res文件夾詳細介紹)

1. src:存放所有的*.java源程序。

2. gen:爲ADT插件自動生成的代碼文件保存路徑,裏面的R.java將保存所有的資源ID。

3. assets:可以存放項目一些較大的資源文件,例如:圖片、音樂、字體等。

4. res:可以存放項目中所有的資源文件,例如:圖片(*.png、*.jpg)、文本等。

5. res/drawable-hdpi:保存高分辨率圖片資源,可以使用Resources.getDrawable(id)可以獲得資源類型。

6. res/drawable-ldpi:保存低分辯率圖片資源,可以使用Resources.getDrawable(id)可以獲得資源類型。

7.res/drawable-mdpi:保存中等分辨率圖片資源,可以使用Resources.getDrawable(id)可以獲得資源類型。

8.res/layout:存放所有的佈局文件,主要是用於排列不同的顯示組件,在Android程序中要讀取此配置。

9.res/values:   存放一些資源文件的信息,用於讀取文本資源,在本文件夾之中有一些約定的文件名稱:
   · arrays.xml:定義數組數據;(在個這個xml命名的時候可以隨便起名,因爲最後用的時候只是用到寫在這個xml文件中的array的名字)

比如在arrays.xml裏:

<string-array name="reboot_item">  
<item>Reboot</item>  
<item>Recovery</item>  
<item>BootLoader</item>  
</string-array>  

在代碼裏獲取:
String item0 =this.getResources().getStringArray(R.array.reboot_item)[0];
String item1 = this.getResources().getStringArray(R.array.reboot_item)[1];
CharSequence[] items = this.getResources().getStringArray(R.array.reboot_item);
 · dimens.xml:定義尺度,可以使用Resources.getDimension()獲得這些資源;有時候我們爲了維護一個工程,或者想定義一個button樣式,或textView樣式,這些樣式中包含着文字的大小,背景圖片,前置圖片等一些資源。而且這個button或textView會在很多地方要用到它,原本我們可以將它的文字大小,圖片樣式等寫在XML中或者代碼中。但這樣的維護性太差了;一旦要修改的時候,需要挨個文件找,挨個修改。現在我們利用dimens來維護時,只需要修改對應的dimens裏定義的值。所有引用它的地方都會自動的修改這樣,我們就達到了維護的目的;將要定義的屬性寫在dimens.xml中,以達到資源重複利用;

<?xml version="1.0" encoding="UTF-8"?>  
<resources>  
    <dimen name="main_tab_h">80dp</dimen> 設置圖片時用dp  
    <dimen name="main_tab_tsize">22sp</dimen> 設置字體大小時用sp  
      
    <dimen name="set_userinfo_prow">100dp</dimen>  
    <dimen name="set_cpwd_prow">100dp</dimen>  
</resources> 
備註:在xml中調用時直接android:layout_height="@dimen/main_tab_h"調用爲其設置大小
             在activity中設置時用context.getResource().getDimensource(r.dimen.main_tab_h);即可爲其動態設置大小。

   · strings.xml:定義字符串,可以使用Resources.getString()或Resources.getText()方法獲得這些資源;

   · styles.xml:定義顯示的樣式文件;(如下代碼,在調用時用@style/TextView即可)

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="TextView">
        <item name="android:textColor">@color/green</item>
    </style>
</resources>

    attrs.xml:(在自定義一個控件的時候,如果定義一些新的屬性的時候,會用到這個文件來設置)當中定義的是類的屬性,屬性是爲了能在xml文件中被引用到,換句話說就是指定類中變量(也就是屬性的實際作用者)的值。這些屬性會在類的構造函數中用到。看過一兩個源碼就會明白,構造函數中的TypedArray其實就是屬性的數組,數組的成員會被賦給類裏的成員,完成從xml的初始化。類的構造函數一般有三個,一個是Class(context),這個用於在代碼中創建一個類,所以只包含一個上下文;Class(context,attrs)和Class(context, attrs, defStyle)用於從xml創建類的情況。

      ids.xml:爲應用的相關資源提供唯一的資源id。id是爲了獲得xml中的對象而需要的參數,也就是Object=findViewById(R.id.id_name)中的id_name。這些值可以在代碼中用android.R.id引用到。
若在ids.xml中定義了ID,則在layout中可如下定義@id/price_edit,否則@+id/price_edit。
使用ids.xml的原因
(1)優化編譯效率。

我們知道android的組件必須用一個int類型的id屬性來標識其唯一性,
id屬性必須以@開頭的值,例如,@id/abc、@+id/xyz等。
如果使用"@+id/name"形式,當R.java中存在名爲name變量時,則該組件會使用該變量的值作爲標識。如果不存在該變量,則添加一個新的變量,併爲該變量賦相應的值(不會重複)。
當修改完某個佈局文件並保存後,系統會自動在R.java文件中生成相應的int類型變量。變量名就是“/”後面的值,例如,@+id/xyz會在R.java文件中生成intxyz =value,其中value是一個十六進制的數。如果xyz在R.java中已經存在同名的變量,就不再生成新的變量,而該組件會使用這個已存在的變量的值。
使用@id/name形式,預先定義的id已經生成,修改配置文件時,也不會引起系統重新生成。
(2)統一管理資源Id。

public.xml——描述的是爲attr、id、drawable所指定的一個32的id值,這個值在current.xml文件中會被用到。

當我們對public.xml做了改動後,執行makeupdate-api命令,相應的current.xml就會添加這些改動。

在public.xml中資源數據的定義會影響到current.xml文件,它們分別在frameworks/asecoreesesvalues和framework/aseapicurrent.xml中。

當進行內核文件修改時,需要特別注意public.xml文件的同步,該文檔定義了資源文件的二進制兼容性。因此需要小心對待該文件,否則可能會破壞該版本的向後兼容性。

  爲了避免破壞兼容性,新的資源需加在同類資源的最後(主要ID值,按照ID值遞增)。若是放置在中間會導致隨後的同類資源被賦予新的ID值從而破壞兼容性。

添加id的方法:

1)在ids.xml中添加公共id項,在public.xml中也添加相應的id項。這種辦法沒有兼容性,會與後面的版本產生衝突。

2)在ids.xml中添加公共id項,每一項前面加一行<!– @hide–>的註釋,這樣就不用在public.xml中添加相應的項了。源碼中是的形式,這樣current中就不會有相應的段了。

3)在自己寫的xml中,使用android:id =“@+id/id_name”的形式,就和在eclipse中一樣,搜一下會發現android源碼中也有這麼用的,這樣ids.xml和public.xml都不用改,兼容性我還不確定。

   · colors.xml:定義表示顏色的數據;

<resources>
	<!-- 定義幾種常用的顏色 -->
	<color name="gold">#b89766</color>
	<color name="white">#FFFFFF</color><!-- 白色 -->
	<color name="black">#000000</color><!-- 黑色 -->
</resources>
10.res/raw:自定義的一些原生文件所在目錄,像音樂、視頻等文件格式。存放直接複製到設備中的任意文件。它們無需編譯,添加到你的應用程序編譯產生的壓縮文件中。要使用這些資源,可以調用Resources.openRawResource(),參數是資源的ID 也可以用,即R.raw.somefilename,Resources.getRawResource()方法可以獲得這些資源。

11. res/xml:用戶自定義的XML文件,所有的文件在程序運行時編譯到應用程序之中,在程序運行時可以使用Resources.getXML()方法獲取。

12. res/anim:用於定義動畫對象。存放定義了補間動畫(tweened animation)或逐幀動畫(frame by frame animation)的XML文件。(該目錄下也可以存放定義property animations的XML文件,但是最好還是分開存放)

13.res/animator:存放定義了property animations(android 3.0新定義的動畫框架)的XML文件

14.res/color/:存放定義了顏色狀態列表資源(Color State List Resource)的XML文件

15.res/menu/:存放定義了應用程序菜單資源的XML文件。正確創建文件的方法:new Folder,名字menu,new Other——Android——XML,選擇menu類型,填寫名稱,確定即可。菜單資源文件必須放在res/menu目錄中。菜單資源文件必須使用<menu>標籤作爲根節點。除了<menu>標籤外,還有另外兩個標籤用於設置菜單項和分組,這兩個標籤是<item>和<group>。

發佈了32 篇原創文章 · 獲贊 17 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章