我们经常在代码中使用到R.layout.main,其中的R是什么含义呢?
R.java(资源清单类)是Android项目自动生成的一个Java类,在项目自动生成的R.java文件中可以见到如下注释:
/**AUTO-GENERATED FILE. DO NOT MODIFY.
**This class was automatically generated by the
**aapt tool from the resource data it found. It
**should not be modified by hand.
**/
通过R.java类中的注释可以看出,R.java文件是由AAPT工具根据应用中的资源文件自动生成的,因此可以把R.java理解成Android应用的资源字典。
AAPT生成R.java文件的规则主要是如下两条:
1、每类资源都对应于R类的一个内部类。比如所有界面布局资源对应于layout内部类;所有字符串资源对应于string内部类;所有标识符资源对应于id内部类;
2、每个具体的资源项都对应于内部类的一个public static final int 类型的Field.
package com.shchieh.r
public final class R{
//内部类attr
public static final class attr{
}
//内部类drawable
public static final class drawable{
//drawable具体的资源项ic_launcher
public static final int ic_launcher = 0x7f20000;
}
//内部类id
public static final class id{
//id具体的资源项show
public static final int show = 0x7f050000;
}
//内部类layout
public static final class layout{
//layout具体的资源项main
public static final int main = 0x7f030000;
}
//内部类string
public static final class string{
//string具体的资源项app_name
public static final int app_name = 0x7f040000;
}
}
随着我们不停的向Android项目中添加资源,R.java文件的内容也会越来越多。