R.java 文件中默認有attr、drawable、layout、string等色哥靜態內部類,每個靜態內部類分別對應着一種資源,如layout靜態內部類對應着layout中的接界面文件,其中每個靜態內部類中的靜態常量分別定義為一條資源標識符,如下:
- //下面對應着的是layout目錄下的main.xml文件
- public static final int main = 0x7f030000;
- 資源文件只能以小寫字母和下划線做首字母,隨后的名字中只能出現[a-z0-9_] 這些字符,否則R.java文件不會自動更新,並且eclipse會提示錯誤
- 當開發者在res/目錄中任何一個子目錄中添加相應類型的文件之后,ADT會在R.java文件中相應內部類中自動生成一條靜態int類型的常量,對添加的文件進行索引
- 如果在layout目錄下添加一個新界面,那么在public static final class layout 中也會添加相應的靜態int常量
- 相反,我們再res目錄下刪除任何一個文件,其在R.java文件中對應的記錄會被ADT自動刪除
- R.java文件除了自動標示資源的索引功能外,如果res目錄中的某個資源在應用中沒有被使用到,在該應用被編譯的時候系統就不會把對應的資源編譯到該應用的apk包中,節省資源
通過R文件來引用所需要的資源:
在 java 程序中應用資源
- 在java程序中應用資源
- 按照java的語法來引用即 R.resource_type.resource_name
- 注意:resource_name 不需要文件的后綴名
- Android系統本身自帶了很多資源可以引用,只是需要在前面加上 Android. 以申明來自Android系統,即Android.R.resource_type.resource_name
- 在xml文件中引用資源
- 在xml文件中一般是通過@drawable/icon的方式獲取的,其中@代表R.java類,drawable代表的是R.java中的靜態內部類drawable,/icon代表靜態內部類drawable中的靜態屬性icon
- 如果訪問的是Android系統自帶的文件,則要添加Android:,如下:
- 在布局文件中當我們需要為一些組件添加Id屬性作為標識@+id/string_name,其中“+”表示在R.java的名為Id的內部類中添加一條常量名為string_name的記錄
- android:textColor="@android:color/red"