1.任意xml资源文件
除了结构化资源外,Android还允许将任意xml文件用作资源。此方法将使用资源的优势延伸到了任意xml文件。首先,它提供了一种快速方式来根据所生成的资源ID引用这些文件。其次,该方法允许本地化这些资源xml文件。再次,可以在设备上高效地编译和存储这些xml文件。需要以此方式读取的xml文件存储在/res/xml子目录下。
就像处理其他Android XML资源文件一样,AAPT(Android Asset Packaging Tool)将编译此XML文件为二进制文件,然后将它放入应用程序包中。如果希望解析这些文件,需要使用一个XmlpULLParser实例。
private String getEventsFromAnXMLFile(Context 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();}// eof-whilesb.append("\n******End document");return sb.toString();}// eof-function


2.原始资源
除了任意XML文件,Android还支持使用原始文件。这些原始资源位于/res/raw下,包括音频、视频或文本文件等需要本地化或通过资源ID引用的原始文件资源。与/res/xml下的XML文件不同,这些文件没有编译,而是按原样转移到应用程序包中。但是,每个文件在R.java中都会生成一个标识符。
假设将文本文件放在/res/raw/test.txt下,能用以下代码读取该文件。
private String getStringFromRawFile(Context activity) throws IOException {Resources r = activity.getResources();InputStream is = r.openRawResource(R.raw.test);String myText = convertStreamToString(is);is.close();return myText;}private String convertStreamToString(InputStream is) throws IOException {ByteArrayOutputStream baos = new ByteArrayOutputStream();int i = is.read();while (i != -1) {baos.write(i);i = is.read();}return baos.toString();}


3.资产
Android还提供了一个/assets目录,可以将要包含在包中的文件放在这里。这个目录与/res具有相同的级别,也就是说它还未包含在/res子目录中。/assets中的文件不会在R.java中生成资源ID,必须指定文件路径才能读取它们。文件路径是以/assets开头的相对路径。可以使用AssetManager类来访问这些文件。
// Note: Exceptions are not shown in the codeString getStringFromAssetFile(Context activity) throws IOException {AssetManager am = activity.getAssets();InputStream is = am.open("test.txt");String s = convertStreamToString(is);is.close();return s;}

更多相关文章

  1. Android(安卓)源码开发系列(二)Android(安卓)SIM/USIM
  2. 关于 Android(安卓)7.0 适配中 FileProvider 部分的总结
  3. 【Cocos2dx通信(Http&Socket)相关编译到Android细节总结】编译加
  4. 如何使用Android(安卓)Studio 创建assets目录存放html 、 assets
  5. android 中不同的Xml中id可以重名吗?
  6. Android(安卓)中的文件操作
  7. Android入门笔记 - 数据存储 - 网络
  8. Android(安卓)本地文件缓存各个方法获取的路径小结
  9. Android笔记之使用CMake进行JNI开发(Android(安卓)Studio)

随机推荐

  1. Android 签名那些事
  2. android 中 AppWidget 的 ListView 的实
  3. 自定义实现圆形播放进度条(android,飞一般
  4. android的surfaceview的用法
  5. Android软键盘的显示与隐藏
  6. Android ListView更换点击效果
  7. Android(安卓)UI(TextView)详解
  8. 在android中ScrollView嵌套ScrollView解
  9. Android布局文件属性笔记
  10. Android的Media架构介绍