Android之R文件

首先了解什么是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内部类中是button

public 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.name1
R.string.name2
//图片
R.drawable.icon1
R.drawable.icon2
//布局
R.layout.first_layout
R.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中的静态内部类drawable
icon代表静态内部类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”的方式引用。

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值