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

public final class R{//全是以 public 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”的方式引用。
————————————————
版权声明:本文为CSDN博主「北枫凉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34686440/article/details/88934680

更多相关文章

  1. Nginx系列教程(四)| 一文带你读懂Nginx的动静分离
  2. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  3. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  4. Android游戏引擎《Rokon》学习笔记六:一个使用Box2D的Rokon小例子
  5. 编译libcurl静态库(.a文件) 在android中使用(armeabi、x86、arm64
  6. android各种资源的详细解释
  7. android的fragment使用中static静态fragment实例遇到的坑
  8. android 拨号面板
  9. Android中静态实例的生命周期

随机推荐

  1. Android:混合轮播视频和图片
  2. Gradle Build加速
  3. Android(安卓)SeekBar
  4. 小知识点
  5. Android中的JSONObject和JSONArray的使用
  6. Android的ADT自带的与Java EE版的Eclipse
  7. 【UI交互效果】android UI效果三: 滚动切
  8. Android(安卓)GradientDrawable类的详解,
  9. 用SVN下载goolge android的开源项目
  10. Android(安卓)Studio 更新0.6.1出现的问