使用其他资源


一、使用任意XML资源文件

    Android允许将任意XML文件用作资源。首先,Android提供了一种快速方式来根据所生成的资源ID引用这些文件;其次,该方法允许本地化这些资源XML文件;再次,可以在设备上高效地编译和存储这些XML文件。需要以此方式读取的XML文件存储在/res/xml子目录下。

(1)示例XML文件

<span style="font-family:SimSun;font-size:14px;"><rooteleml>
<subeleml> Hello World from an xml sub element </subeleml>
</rooteleml></span>

(2)读取XML文件

    就像处理其他Android XML资源文件一样,AAPT将编译此XML文件,然后将它放入应用程序包中。如果希望解析这些文件,需要使用一个XmlPullParser实例。

<span style="font-family:SimSun;font-size:14px;">Resources res = activity.getResources();
XmlResourceParser xpp = res.getXml(R.xml.test);</span>

    返回的XmlResourceParser是XmlPullParser的一个实例,它还实现了java.util.AttributeSet。

(3)使用XmlPullParser

<span style="font-family:SimSun;font-size:14px;">private String getEventsFromXMLFile(Activity activity) throws XmlPullParserException, IOException{
StringBuffer sb = new StringBuffer();
Resources res = activity.getResources();
XmlResourceParser xpp = res.getXml(R.xml.test);
xpp.next();
int eventType = xpp.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT){
if(eventType == XmlPullParser.START_DOCUMENT){
sb.append("**Start document");
}else if(eventType == XmlPullParser.START_TAG){
sb.append("\nStart tag "+xpp.getName());
}else if(eventType == XmlPullParser.END_TAG){
sb.append("\nEnd tag "+xpp.getName());
}else if(eventType == XmlPullParser.TEXT){
sb.append("\nText "+xpp.getText());
}
eventType = xpp.next();
}
sb.append("\n*****End document");
return sb.toString();
}</span>


二、使用原始资源

    Android还支持使用原始文件。这些原始资源位于/res/raw下,包括音频、视频或文本文件等需要本地化或通过资源ID引用的原始文件资源。与/res/xml下的XML文件不同,这些文件没有编译,而是按原样转移到应用程序包中。但是,每个文件在R.java中都会生成一个标识符。

(1)读取原始资源

<span style="font-family:SimSun;font-size:14px;">String getStringFromRawFile(Activity activity) throws IOException{
Resources r = activity.getResources();
InputStream is = r.openRawResource(R.raw.test);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i = is.read();
while(i != -1){
baos.write(i);
i = is.read();
}
String myText = baos.toString();
is.close();
return myText;
}</span>

    注:具有重复基础名称的文件名称会在Ecplise ADT插件中生成编译错误,为文件资源生成的所有资源ID就属于这种情况。

 

三、使用资产

    Android还提供了一个/assets目录,可以将要包含在包中的文件放在这里。这个目录与/res具有相同的级别,/assets中的文件不会在R.java中生成资源ID,必须指定文件路径才能读取它们。文件路径以/assets开头的相对路径。

(1)读取资产

<span style="font-family:SimSun;font-size:14px;">String getStringFromAssetFile( Activity activity ){
AssetManager am = activity.getAssets();
InputStream is = am.open("test.txt");
String s = convertStreamToString(is);
is.close();
Return s;
}</span>


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值