资源文件的使用分为在代码中使用和在其他资源文件中引用该资源文件。在我们编译一个Android应用时,Android会自动生成一个R类,在该类中根据不同的资源类型又生成了相应的内部类,该类包含了系统中使用到的所有资源文件的标示,其内容如下所示。
Java代码:
package eoe.demo;
// 资源类
public final class R {
// 数组
public static final class array {
public static final int faultRecords=0x7f060000;
}
// 属性
public static final class attr { }
// 颜色
public static final class color {
public static final int black=0x7f040001;
public static final int red=0x7f040000;
}
// 图片
public static final class drawable {
public static final int icon=0x7f020001;
public static final int logo2=0x7f020002;
}
// ID标示
public static final class id {
public static final int licenseEditText=0x7f070022;
public static final int lngEditText=0x7f070001;
}
// 布局
public static final class layout {
public static final int custom_dialog=0x7f030000;
public static final int custom_dialog1=0x7f030001;
}
// 字符串
public static final class string {
public static final int app_name=0x7f050001;
public static final int hello=0x7f050000;
}
}
1.在代码中使用资源文件
在代码中访问资源文件,我们是通过使用R资源类中定义的资源文件类型和资源文件名称来访问的。具体格式为:R.资源文件类型.资源文件名称。例如:
Java代码:
// 设置Activity显示的布局视图
setContentView(R.layout.login_system);
// 获得Button实例
cancelBtn = (Button)findViewById(R.id.cancelButton);
loginBtn = (Button)findViewById(R.id.loginButton);
// 获得TextView实例
userEditText = (EditText)findViewById(R.id.userEditText);
pwdEditText = (EditText)findViewById(R.id.pwdEditText);
}
另外,除了访问用户自己定义的资源文件,还可以访问系统中的资源文件。大部分的资源文件被定义在android包下的R类中。访问系统中的资源文件格式为:android.R.资源文件类型.资源文件名称。例如:
Java代码:
int i ;
// 动画
i = android.R.anim.fade_in;
// 数组
i = android.R.array.emailAddressTypes;
// 颜色
i = android.R.color.darker_gray;
// 尺寸
i = android.R.dimen.app_icon_size;
// 可绘制图片
i = android.R.drawable.title_bar;
// 字符串
i = android.R.string.cancel;
2.在其他资源文件中引用资源文件
我们经常会在布局文件的元素属性中引用其他资源文件,经常用到的有字符串、图片、颜色等资源。例如,下列布局文件中的TextView组件引用了一个字符串来表示文本内容,引用了一个颜色来表示文本颜色,引用了一个尺寸来表示文本尺寸。
Java代码:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/styled_welcome_message"
android:textColor="@color/opaque_red"
android:textSize="@dimen/sixteen_sp" />