在Android应用开发中离不开资源文件的使用,从drawable到string,再到layout,这些资源都为我们的开发提供了极大的便利,不过我们平时大部分时间接触的资源目录一般都是如下三个。
/res/drawable:保存素材文件,例如图片。
/res/values:保存值文件,通常命名为strings.xml。
/res/layout:保存布局文件,通常命名为main.xml。
上述三个文件在Android项目目录中,一般如图6-9所示。
图6-9 Android项目中的资源存储目录
其实在Android中的资源文件并不止这些,接下来为大家介绍如下另外三个资源目录。
/res/xml
/res/raw
/assets
(1)/res/xml目录
首先是/res/xml,可以用来存储“.xml”格式的文件,并且和其他资源文件一样,这里的资源是会被编译成二进制格式放到最终的安装包里的。也可以通过R类来访问此文件,并且解析里面的内容,例如存放了一个如下名为data.xml的文件:
(www.daowen.com)
然后就可以通过资源ID来访问并解析这个文件了,例如下面的代码:
在上树代码中,使用了资源类的方法getXml(),返回了一个XML解析器,这个解析器的工作原理和SAX(用于处理XML事件驱动)方式差不多。在此要注意的是,这里的XML文件最终会被编译成二进制形式。如果想让文件原样存储的话,那么就要用到下一个目录/res/raw。
(2)/res/raw目录
这个目录和/res/raw目录的唯一区别是:里面的文件会原封不动的存储到设备上,不会被编译为二进制形式,访问的方式也是通过R类,例如下面的演示代码:
在此使用了资源类中的方法openRawResource(),返回给我们一个输入流,这样就可以任意读取文件中的内容了,例如和上述代码中那样,会原样输出文本文件中的内容。当然,如果需要更高的自由度,尽量不受Android平台的约束,那么/assets目录就是首选了。
(3)/assets目录
在此目录中的文件,除了不会被编译成二进制形式之外,并且访问是通过文件名来实现,而不是资源ID。并且还有更重要的一点就是,在此任意建立子目录,而“/res”目录中的资源文件是不能自行建立子目录的。如果需要这种灵活的资源存储方式,请读者看下面的演示代码:
调用getAssets()返回一个AssetManager,然后使用open()方法就可以访问需要的资源,这里open()方法是以assets目录为根目录。所以上面这段代码访问的是assets目录中名为data.txt的资源文件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。