使用其他资源

来源:互联网 发布:淘宝联盟高佣活动在哪 编辑:程序博客网 时间:2024/06/06 19:23


一、使用任意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>


 

 

 

0 0
原创粉丝点击