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"