首先了解什么是R文件

当 Android 应用程序被编译,会自动生成一个 R 类,其中包含了所有 res/ 目录下资源。包括布局文件layout,图片文件drawable等。
具体的内容如下所示:

public final class R{//全是以 publi static final 开头的内部类...public static final class layout{...}public static final class id{...}public static final class drawable{...}public static final class mipmap{...}public static final class color{...}public static final class string{...}public static final class style{...}...}

我们在这里并不需要知道更多的东西,只需要知道Android会自动生成R文件(R.java)是一个java类,其中包括drawable、layout、string等各色静态内部类(每个静态内部类分别对应着一种资源,如layout静态内部类对应着layout中的接界面文件)。而每个静态内部类中的静态常量分别定义为一条资源标识符。
如下:内部类 id 里面的内容(下面省略了部分代码):

//id内部类中是buttonpublic static final class id{//全是以 public static final int 开头的属性...public static final int button_1="0x7f070022";public static final int button_2="0x7f070023";public static final int button_3="0x7f070024";...}

好了,总结一下就是:Android自动运行生成R文件,该文件中包含各种静态内部类(res资源:如layout、string、drawable等),内部类中包含静态常量(资源标识符:如layout静态类中包含first.xml,second.xml,那么资源标识符就是first、second)。

如何使用R文件

这又是在Android中分成两种情况

1、 在java文件中使用R文件

1.使用的res资源下,通过R.子类.资源名(即资源标识符) R.type.name

//字符R.string.name1R.string.name2//图片R.drawable.icon1R.drawable.icon2//布局R.layout.first_layoutR.layout.second_layout//....

2.使用android自带的资源下, android.R.type.name
只是需要在前面加上 android. 以申明来自Android系统

2、在XML中使用R文件

1.在res资源下,@[package:]type/name(使用我们自己包下的资源可以省略 package)

@drawable/icon/*其中@代表R.java类drawable代表的是R.java中的静态内部类drawableicon代表静态内部类drawable中的静态属性icon而该属性可以指向 res 目录下的“drawable-*dpi”中的 icon.png 图标*/

2.在android内置资源下,则要添上包名“android:”

android:textColor=”@android:color/red”

最后说明一下“@+id/string_name”表达式

顺便说一下,在布局文件当中我们需要为一些组件添加 Id 属性作为标示,可以使
用如下的表达式“@+id/string_name”
其中“+”表示在 R.java 的名为 id 的内部类中添加一条记录。如”@+id/button”的含义是在 R.java 文件中的 id 这个静态内部类添加一条常量名为 button,该常量就是该资源的标识符。如果 id 这个静态内部类不存在,则会先生成它。
通过该方式生成的资源标识符,仍然可以以“@id/string_name”的方式引用。

更多相关文章

  1. android 开发之电子钢琴 源码
  2. 初学Android,使用菜单资源(十九)
  3. 设置ProgressBar的颜色
  4. Android(安卓)aapt 资源打包工具
  5. android ndk 使用第三方静态库
  6. android tips:从资源文件中读取文件流显示
  7. android 类似QQ 换皮肤 实现思路 apk资源共享
  8. Android(安卓)利用getIdentifier()方法获取资源ID
  9. Windows平台上编译OpenCV的Android版本

随机推荐

  1. Java正则表达式过滤脚本威胁--封装类
  2. mysql sync_binlog和 innodb_flush_log_a
  3. H3C交换机和华为交换机及服务器对接
  4. Linux核心技能与应用
  5. MySQL分库分表
  6. MySQL InnoDB之锁机制
  7. 重磅 | 深度学习芯片大战愈演愈烈,英特尔
  8. 软件项目管理的十大定律
  9. 参数SQL_SLAVE_SKIP_COUNTER的奥秘
  10. EGG NETWORK公链阿凡提以“完全开放式自