Android开发中的R理解

2021-04-29  本文已影响0人  wisdom2018

一.R文件
当Android应用程序被编译,会自动生成一个R类,其中包含了所有的res/目录下资源的ID,如布局文件,资源文件,图片
res目录下保存的文件大多数都会被编译,并且被赋予资源ID,这些ID被保存在R.java文件中,这样我们就可以在程序中通过ID来访问res类的资源
资源文件只能以小写字母和下划线做首字母,随后的名字中只能出现【a-z0-9_.】这些字符,否则R.java不会自动更新
在写Java代码的过程中,你可以使用R类,通过子类+资源名或者直接使用资源ID来访问资源

二. R.java文件中资源RD的含义
Android中的资源使用几乎无处不在,layout,String、drawable、raw、style、theme等等都是,这些资源会在编译过程中被打包进APK中(res文件夹)或者被打包成独立的资源APK包(如framework-res.apk)
资源都会被赋予独一无二的ID,即资源索引来方便系统的访问
这些资源索引由Androi的,的工具AAPT(Android Asset Packing Tool)生成八位十六进制整数型

public static final int bar = 0x7F020003
7F:资源属于应用APK包资源
01资源属于系统资源包
后四位:资源在资源包该资源类型中的编号
02:drawable
03:layout
04:values
05:xml
06: raw
07: color
08: menu

//获取文字
getResources().getText(R.string.name)

//图片
getDrawable(R.drawable.icon)

//颜色
getResources().getColor(R.color.red)

//布局
setContentView(R.layout.main)

三、在XML文件中引用R资源ID
格式:@【package:】type/name
xml文件中,如main.xml以及AndroidMainfest.xml文件中通过"@drawable/icon"的方式获取,其中"@"代表的是R.java类,"drawable"代表的是R.java中的静态内部类"drawable","/icon"代表静态内部类"drawable"中的静态属性"icon"

凡是在R文件中定义的资源都可以通过"@Static_inner_classes_name/resource_name"的方式获取,如"@id/button","@string/app_name"
若是访问Android系统自带的文件,则需要添加"Android:"例如 android:textColor="@android:color:red"

四、在XML文件中向R类添加资源ID
在布局文件中当我们需要为一些组件添加ID属性作为识别,可以使用如下的表达式:"@+id/string_name",其中"+"表示在R.java的名为id的内部类中添加一条记录

例如"@+id/button"表示在R.java文件中的id这个静态内部类添加一条常量名为button,该常量就是该资源的标识符,若id这个静态内部类不存在,则会先生成它

上一篇下一篇

猜你喜欢

热点阅读