在安卓应用的开发过程中,代码、字符串、菜单、图像、声音、视频这些文件统称为资源。
他们都存储在资源文件(res/)下面。
此处在讲解了资源文件的相关知识后,着重介绍字符串、颜色、尺寸、布局、数组、资源、原始xml文件等。
一、资源简介
1、映射
Android应用中的所有资源,都将被编译成二进制的形式存放在Android应用中,每个资源都被赋予一个独一无二的int型的ID,资源在引用时将通过int型的ID而不是资源的名称。映射文件为R.java文件
2、命名
(1)资源命名要符合Java变量命名规范
(2)同类资源的文件名或变量名不能重复,因为同类资源的ID都被放在R的同一个内置类中,当然不允许有重名的类,同一个类中也不允许有重名的变量。
(3)由于在生成ID时并不考虑资源文件的扩展名,因此,在同一个资源类型的目录中不能存在文件名相同,扩展名不同的资源文件。
3、访问
1)引用自定义的资源
格式:@[package]type/name
@为资源引用的标志,package 为资源所在的包名,type为资源类型,允许的值为:layout、value 、drawable、string、color、menu、raw和xml等
例如:main.xml文件中对string资源hello引用代码如下
android:text=“@string/hello”
(2) 引用系统资源
格式:@android:type/name
android:textColor=“@android:color/opaque_red”
(3) R.java 中如何访问资源
格式:R.type.name
例如,需要引用string资源hello,对应的代码
R.string.hello
也可以引用android系统资源,只不过要在R的前面加上包名android。
例如
setBackground(android.R.color.darker_gray)
二、常用的资源类型
1、String字符串
- 字符串资源文件文件位于res/values目录下的strings.xml
<resources>
<string name=“hello”> Hello World!</string>
<string name=“app_name”>xtt's app</string>
</resource>
1)在Java文件中使用字符串资源的语法格式为:[.]R.string.字符串名
2)在XML文件中使用字符串资源的基本语法格式为:@[:]string/字符串名
注意:
1、转义字符的使用。
2、如果在String资源中包含动态参数,需要使用“%编号$s”来作为参数的占为符号,其中*代表参数的编号,从1开始计数。
<string name="format_string">
Hello %2$s ha ha. %1$s again
</string>
要引用上面声明的String资源,需要使用String类的format 方法
String temp = this.getString(R.string.format_string);
String substitutedString = String.format(temp,"Hello","Android");
结果为:Hello Android ha ha.Hello again
2、Color颜色
- 颜色资源文件位于res/values目录下,一般命名为color.xml
<resources>
<color name=“pink”> </string>
</resource>
使用方法跟String相同
3、dimen尺寸
- 尺寸资源文件位于res/values目录下
<resources>
<dimen name=“chicun”> 16dp</string>
</resource>
使用方法跟String相同。
此处常用于设置备用资源(为了支持特定的设备)在 res/ 中创建一个以<resources_name>
-<config_qualifier>
形式命名的新目录。
4、Layout布局
- 布局资源文件放置在res/layout目录下
使用方法跟String相同。
5、array数组
- 数组资源文件位于res/values/arrays.xml文件中
<resources></resources>
标记,在该元素中,包括以下3个子元素。
<array />
子元素:用于定义普通类型的数组。
<integer-array />
子元素,用于定义整数数组。
<string-array />
子元素,用于定义字符串数组。
使用数组资源跟String相同,不同的是
String[] temp = getResources().getStringArray(R.array.select_dialog_items);
6、Drawable资源
- 资源文件位于res/drawable文件夹中。
- 主要保存图片资源等。
- 于String的使用方法相同。
7、原始XML资源
- 一般保存在res/xml目录下。
- 通过Resources.getXml()方法来访问。
- 此处的XML文件是指格式良好,无特殊要求的普通XML文件
此处给出一个使用的例子:
<words>
<word value="lorem" />
<word value="ipsum" />
<word value="dolor" />
</words>
XmlPullParser xmlPullParser= getResources().getXml(R.xml.words);//解析器
try {
while (xmlPullParser.getEventType()!=XmlPullParser.END_DOCUMENT){//判断是否能达文档结尾
if(xmlPullParser.getEventType()==XmlPullParser.START_TAG){//判断是否是元素的起始标志
if(xmlPullParser.getName().equals("word")){//判断元素名称 Log.d(ResourceActivity.class.toString(),xmlPullParser.getAttributeValue(0));//取得属性值
}
}
xmlPullParser.next();
}}catch (Exception e){
e.printStackTrace();
}