美文网首页
Android开发中的R理解

Android开发中的R理解

作者: wisdom2018 | 来源:发表于2021-04-29 17:48 被阅读0次

    一.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这个静态内部类不存在,则会先生成它

    相关文章

      网友评论

          本文标题:Android开发中的R理解

          本文链接:https://www.haomeiwen.com/subject/nvmwrltx.html