`

Android中原始资源、任意xml资源和资产的使用

阅读更多

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-while
		sb.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 code
	String getStringFromAssetFile(Context activity) throws IOException {
		AssetManager am = activity.getAssets();
		InputStream is = am.open("test.txt");
		String s = convertStreamToString(is);
		is.close();
		return s;
	}
分享到:
评论

相关推荐

    Android中使用xml文件定义颜色资源.pdf

    总结来说,Android中使用XML文件定义颜色资源是一种规范且灵活的方法,它能帮助开发者更好地组织和重用颜色信息。通过在`colors.xml`中定义颜色,然后在布局文件、`drawable`资源或代码中引用,可以提高代码的可读性...

    Android-Android国际化文档整理xml和excel互转

    "Android-Android国际化文档整理xml和excel互转"项目主要关注如何方便地管理和转换Android应用中的本地化资源。 一、Android的国际化原理 Android的国际化是通过资源文件夹来实现的。在项目的`res`目录下,我们...

    android String.xml Excel 相互转换工具

    为了方便管理这些多语言资源,Android使用`String.xml`文件来存储应用中的文本字符串。然而,手动编辑这些XML文件既耗时又容易出错,尤其是在处理大量文本时。这时,就需要借助一些工具进行`String.xml`与Excel之间...

    android qq 图片 xml资源包

    "android qq 图片 xml资源包" 指的是从QQ的apk应用程序文件中提取出的图像资源和相关的XML配置文件。这些资源通常包括了应用内的各种图形元素,如按钮、图标、背景等,而XML文件则用于定义它们的属性和行为。 QQ,...

    将AndroidStudio 的 VectorDrawable xml 资源逆向转回 svg文件

    自制工具,将AndroidStudio 的 VectorDrawable xml 资源逆向转回 svg文件方便编辑。工具为带js的html,上方输入框贴入xml,下方输入框输出svg代码结果以及svg预览 注意目前仍未支持渐变填充

    android颜色xml配置

    XML颜色配置是Android系统提供的一种灵活、可维护的颜色资源管理方式,允许开发者在XML文件中定义和使用颜色,而非直接在代码中硬编码。这种方式有助于保持代码的整洁,提高代码的可读性和可复用性,同时也方便进行...

    Android中修改资源ID值

    在Android开发过程中,资源ID(Resource ID)是系统为应用中的资源分配的唯一标识符,通常以`R.`开头,用于在代码中引用这些资源。然而,在某些特殊情况下,我们可能需要修改这些ID的值。这通常是由于资源冲突、调试...

    android使用pull 解析xml文件源码

    pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...

    【Android Studio代码】xml字符串资源

    用Android Studio 2.3.3做的获取xml的字符串资源例子,主要用到的代码有:String sData = getString(R.string.app_name).toString();xml定义字符串资源<string name="app_name">NewApp006是自动生成的,用户也可以...

    android反编译xml、layout

    在Android应用开发中,APK是应用程序的二进制包,包含了代码、资源文件和配置信息。当开发者希望深入理解已有的APK或者对它进行逆向工程时,就需要使用到像`apktool`这样的工具。`apktool`是一个开源的Android反编译...

    Android解析XML使用WebView显示

    以上就是“Android解析XML并使用WebView显示”的主要技术点,开发者需要理解并掌握这些知识点,才能在实际项目中顺利实现这一功能。通过不断实践和学习,我们可以更好地理解和运用这些工具,提升应用的质量和用户...

    Android中ListView的每个Item以资源文件XML形式显示数据进行布局

    它的每个Item(列表项)通常由一个布局资源文件XML定义,这样可以灵活地设计每个列表项的外观和内容。下面我们将深入探讨如何使用XML文件来创建ListView的Item布局,并将其与数据绑定。 1. **XML布局文件**: XML...

    Android颜色资源文件color.xml

    颜色齐全,并且包含中文颜色注释,可直接复制到项目工程中使用

    android的xml文件的解析

    总结,XML解析是Android开发中的基础技能,了解并掌握DOM和SAX解析方式可以帮助开发者更有效地处理XML文件。选择合适的解析方式取决于具体的应用场景和性能需求。在实际项目中,还有一种基于SAX的拉式解析库——PULL...

    获取android中String资源文件

    Android项目中,通过这个类可以获取资源文件中String.xml中的信息,

    android xml文件解码工具

    3. **Android资源ID**:在XML布局文件中,我们经常使用资源ID引用其他资源,如`@string/app_name`或`@drawable/ic_launcher`。理解资源ID的生成规则和查找方法是必要的。 4. **AXML文件**:在Android中,XML文件会...

    Android XML attribute

    ### Android XML Attribute详解 在Android开发中,XML文件扮演着非常重要的角色,特别是在定义界面布局、样式、动画等方面。为了帮助开发者更好地理解Android中的各种XML属性及其用途,本文将详细介绍部分核心XML...

    Excel和String.xml 互相转换工具

    在IT行业中,尤其是在Android或者iOS应用开发中,`String.xml` 文件是用于管理应用程序中所有字符串资源的关键文件。它允许开发者集中地定义、管理和翻译应用中的文本,提高代码的可维护性和可扩展性。本工具则专注...

    android访问网络返回的XML数据并且进行解析

    4. **解析XML数据**:Android提供了两种主要的XML解析方法:SAX解析器和DOM解析器。SAX适用于大型XML文件,因为它逐行解析,内存消耗小。DOM解析器则一次性加载整个XML树,适合小型文件。 - **SAX解析**:SAX解析器...

    xml.zip_Android XML_android

    本压缩包"xml.zip_Android XML_android"显然是一个关于Android平台下XML解析的资源集合,可以直接导入Eclipse IDE进行学习和使用。 Android中的XML解析主要分为两种方式:DOM解析和SAX解析。 1. DOM解析(Document...

Global site tag (gtag.js) - Google Analytics