android中的资源文件存放在两个文件中:res和assets.assets中主要保存一般的原生文件,如MP3文件,android程序不能直接访问,必须通过AssetManager类以二进制流的形式来读取.而res中的资源可以通过R资源类直接访问.res目录下又有anim、drawable、layout、menu、raw、values和xml文件夹,分别用来保存动画、图片、布局文件、菜单、原生文件、常量值和XML文件夹.values文件夹下又分为:arrays(数组)、colors(颜色)、dimens(尺寸)、styles(样式)、string(字符串).下面开始逐个介绍各个资源的访问方式。
注:除了访问自己定义的资源,系统为我们定义了很多资源,可以通过android.R.资源文件类型.资源文件名称来获取。比如android.R.string.cancel就是“取消”,我们就没必要自己再在string文件中重复定义了。
一、常量资源访问
arrays、colors、dimens、string等常量的访问方式是相同的,也很简单,下面只介绍下访问方式,不写实例代码了,主要篇幅留给其他资源访问的介绍。
资源定义:
<resources>
<子元素 name=“元素名称”> values</子元素>
</resources>
资源获取:
java代码中:R.子元素.子元素名称(如:R.color.blue)
xml中:@[package:]子元素/子元素名称(如:@color/blue)
二、使用原始XML资源
主要方法:getResources().getXml()获得XmlResourceParser对象。
直接上代码:
<?xml version="1.0"encoding="utf-8"?>
<resources>
<customer name="tom" age="20" gender="male"email="jxt@yeah.net"/>
<customer name="jim" age="22" gender="female"email="jxt2012@yeah.net"/>
</resources>
main.xml代码:
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/testBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="get xml res"
/>
<TextView
android:id="@+id/testTv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
XmlResActivity代码:
package com.pdf.res;
imp
imp
imp
imp
imp
imp
imp
imp
imp
imp
public class XmlResActivity extends Activity {
Button mButton;
TextView mTextView;
@Override
public voidon
super.on
setContentView(R.layout.main);
mButton=(Button)this.findViewById(R.id.testBtn);
mTextView=(TextView)this.findViewById(R.id.testTv);
mButton.setOnClickListener(new On
@Override
public voidon
intcounter=0;
StringBuildersb=new StringBuilder("");
Resourcesr=getResources();
XmlResourceParserxrp=r.getXml(R.xml.test);
try{
while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){
if(xrp.getEventType()==XmlResourceParser.START_TAG){
Stringname=xrp.getName();
if(name.equals("customer")){
counter++;
sb.append("第"+counter+"条客户消息:");
sb.append(xrp.getAttributeValue(0)+"\n");
sb.append(xrp.getAttributeValue(1)+"\n");
sb.append(xrp.getAttributeValue(2)+"\n");
sb.append(xrp.getAttributeValue(3)+"\n\n");
}elseif(xrp.getEventType()==XmlResourceParser.END_TAG){
}elseif(xrp.getEventType()==XmlResourceParser.TEXT){
}
}
xrp.next();
}
mTextView.setText(sb);
}catch(XmlPullParserExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}});
}
}
程序截图:

注 : 上文转自别处 刚刚自己试了试 发现通过activity.getResources().getString(R.dimen.margins)就可得到xml文件里面指定的字段 activity 为上下文对象 margins 为我想要在xml文件里面获取的填充值 如<string name="margins">10dip</string> 得到的为10dip