1. 组成分析
如上图所示,在文件结构中res目录、src目录、AndroidManifest.xml是android项目必须的。其他文件和目录都是可选的。
- res目录存放Android项目的各种资源文件,layout存放界面布局文件,values存放各种XML格式的资源文件,例如字符创资源文件:strings.xml、颜色资源文件:colors.xml、尺寸资源文件:dimens.xml以及drawable-*的分辨率4中图片文件。
- src目录保存java源文件的目录
- AndroidManifest文件Android项目的系统清单文件,它用于控制Android应用的名称,图标,访问权限等整体属性。除此之外的Android应用的Activity、Service、ContentProvider、BroadcastRecevier这4大组件都需要在该文件中配置。
- build.xml 这是Android为该项目提供的一个Ant生成文件,通过生成文件,开发者可以通过Ant来生成、安装Android项目。
- bin用于存放生成的目标文件
- gen用于保存自动生成的、位于Android项目包下的R.java文件
- R.java文件,由aapt工具根据应用中的资源文件来自动生成的,可以把R.java理解成Android应用的资源字典。
aapt生成R.java文件的规则有两条:
1)每类资源对应R类的一个内部类
2)每个具体的资源项对应于内部类的一个public static final int类型的Field(成员变量)。
2、res目录说明
- res目录说明
在该目录下存放了Android应用所需的全部资源,将不同的资源放在不同的文件夹内,可以方便AAPT工具来扫描这些资源,并生成对应的资源清单类R.java
例如/res/value/strings.xml文件
<resources>
<string name="app_name">HelloWorld</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>
1.在Java代码中使用资源
R.java中每个资源对应一个内部类,上面的string资源所对应的内部类。
public static final class string {
public static final int action_settings=0x7f050001;
public static final int app_name=0x7f050000;
public static final int hello_world=0x7f050002;
}
Java代码中通过R.string.app_name来获取strings.xml中app_name属性所对应的HelloWorld值。
在XML文件中使用资源
访问格式如下:@<资源对应的内部类的类名>/<资源项的名称>
例如访问app_name使用@string/app_name即可。
但有种情况例外,当我们在XML文件中使用标识符时,这些标识符无须使用专门的资源进行定义,直接在XML文档中按如下格式分配标志符即可。
@+id/<标识符代号>
如果希望在Java代码中获取该组件, 通过调用Activity的findViewById()方法即可实现。
如果希望在XML中获取该组件,则可以通过资源引用的方式来引用它。语法如下:@id/<标志符代号>