概述
res目录用于存放Android应用程序使用到的所有资源,按照约定将不同的资源存放到不同的文件夹内,这样可以方便地让APPT工具来扫描这些资源并为其生成对应的资源清单类(R.java)。
资源存放规则
- drawable用于存放图片资源
- layout用于存放布局资源
- mipmap用于存放图标资源
- values用于存放字符串资源
自动生成的资源清单类R
R.java文件是由APPT工具根据应用中的资源文件来自动生成的,因此我们可以把R.java理解成Android应用的资源字典。
生成R.java文件的主要规则如下:
- 每类资源对应R类的一个内部类。如界面布局资源对应于layout内部类;所有字符串资源对应于string内部类;所有标识符资源对应于id内部类。
- 每个具体的资源项对应于内部类的一个public static final int类型Field。如若在界面布局文件中定义了ok标识符,则R.id类中就包含了此Field。
一个简单实例如下:
public final class R {
public static final class anim {
public static final int abc_fade_in=0x7f050000;
}
public static final class id {
public static final int ok=0x7f0b0058;
}
public static final class layout {
public static final int activity_main=0x7f04001b;
}
public static final class string {
public static final int app_name=0x7f060021;
}
}
资源定义方法
定义布局资源
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/button_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"/>
</LinearLayout>
资源使用方法
在Java代码中使用
Java代码可通过自动生成的资源清单类R完成对相关资源的访问。如通过R.string.app_name
来引用定义的名为app_name
的字符串变量。
在XML中使用
只需按@<资源对应的内部类的类名>/<资源项的名称>
的格式,即可完成在XML中对相关资源的访问。如使用@string/app_name
来引用名为app_name
的字符串常量。
我们也可以使用@+id/<标识符代号>
的方式在XML文件中为组件分配标识符。如使用android:id="@+id/ok"
来为此组件分配一个值为ok的id。
参考《疯狂Android讲义》