android中的资源引用语法:
@[package:]type/name
type有以下几种类型
drawable、id、layout、string、attr、plurals、string-array
package表示包名,如果不定义包名的话则根据应用程序的本地资源和本地R.java进行解析。如果package指定为android:的话,则使用android.R.java进行解析。也就是说资源可以使用自己定义的,也可以使用android的sdk中提供的。如:
<TextView android:id="@+id/text" /> //使用本地id:text,如果不存在的话则新建该id
<TextView android:id="@android:id/text" //使用android.R.java中的id:text,如果不存在则会出错
/>
【id的重用】
如上面所说,如果在定义id时没有+号,则表示使用已经存在的id,即重用id。那么如何定义一个id用于重用呢?
可以在/res/values下的xml文件中定义可重用的id,使用资源标记item来定义,不将它依附到任何特地的资源。
<resources>
<item type="id" name="text"/>
</resources>
【已编译和未编译的资源】
Res资源文件夹中几个重要的子目录及保存的资源类型
drawble:位图
layout: 布局
values: 数组、颜色、尺寸、字符串和样式
xml: 已编译的任意xml文件
raw: 未编译的原始文件
anim: 已编译的动画文件
在生产apk时,会将除raw文件夹以外的所有资源都打包到apk中
【字符串数组】
可以在资源文件中定义字符串数组,方便重用。字符串数组定义于/res/string文件夹下
<resources>
<string-array name="test_array">
<item>one</item>
<item>two</item>
<item>three</item>
</string-array>
</resources>
使用方式(在activity中):
Resources resource = this.getResources();
String[] args = resource.getStringArray(R.array.test_array); //获取字符串数组
ListView listView = new ListView(this); //将字符串数组作为列表显示
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, args));
setContentView(listView);