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>。