美文网首页
asserts res 和res/raw的区别

asserts res 和res/raw的区别

作者: 人失格 | 来源:发表于2016-11-22 16:27 被阅读61次

android应用可以将资源存储在两个目录:res和assets。其中res目录中的资源只能存储在相应的
子目录(如res/layout、res/values等)中,不能直接将资源存储在res目录中。assets目录中的
资源可以任意存放,也可以建立任意层次的子目录。res和assets资源的主要区别如下。
1、引用资源的方式不同
res目录中的所有资源都会在R类的相应子类中生成对应的int类型变量,需要使用这些变量
来引用资源。例如res/layout/main.xml是布局文件资源,会在R.layout类中生成一个名为main的
变量,所以需要使用R.layout.main来引用main.xml。
assets目录中的资源需要直接使用文件名来引用,例如assets/xyz.xml、assets/abc/test.db是
assets目录中的两个资源文件,其中abc是assets中的子目录。可以使用如下的代码引用这两个资源文件,
并返回与资源文件对应的InputStream对象,剩下的操作就是普通的Java代码输入流操作了。

InputStream is1=getResources().getAssets().open("xyz.xml");
InputStream is2=getResources().getAssets().open("abc/test.db");

2、处理方式不同
res目录中的资源子目录除了raw外,其他资源目录中的资源文件都会被编译,这也是为什么
将APK文件解压后无法直接查看XML格式资源文件内容的原因。而assets与res/raw目录中的资源
文件不会做任何处理,所以将APK解压后,这两个目录中的资源文件都会保持原样.

3、子目录不同
res目录只能有一层子目录,而且这些子目录必须是预定义的,如res/layout、res/values等都是
合法的,而res/abc,res/xyz并不是合法的资源目录,在assets目录中可以建任意层次的子目录(只受操作系统的限制)

相关文章

  • asserts res 和res/raw的区别

    android应用可以将资源存储在两个目录:res和assets。其中res目录中的资源只能存储在相应的子目录(如...

  • android面试题?

    1.Android 项目中 asset 目录和 res 目录有什么区别res/raw和assets的相同点:htt...

  • assets和res/raw目录区别

    相同点: 两个文件夹下的文件都不会被编译为二进制文件,都会原封不动的放到apk包中。 不同点 assets内可以有...

  • Android的资源文件介绍

    【库】res/raw与assets区别:http://blog.csdn.net/chdjj/article/de...

  • apk打包流程

    aapt资源编译 编译assets目录和res/raw目录下的资源 编译res目录下的资源文件 给res目录下的每...

  • res/raw、res/drawable与assets

    以下内容整理自互联网,仅用于个人学习 res/raw与assets对比 res/raw和assets的相同点:两者...

  • assets与res/raw的区别

    src/main/assets vs src/main/res/raw 的相同点与不同点 相同点都不会被编译成二进...

  • assets 与 res/raw 的区别

    asset:文件不会被映射到R文件中;可以有目录结构;使用 AssetManager 获得输入流。res/raw:...

  • Android开发入门教程之三

    在Android项目中,资源以文件的形式存储在res/目录中。除了raw资源(res/raw)之外,系统会为你解析...

  • assets目录和res/raw目录的区别

    项目中,欢迎页背景为视频,就视频文件到底放在哪个地方这一问题,跟同事观点有些不合,查阅相关资料,在此记录。网上关于...

网友评论

      本文标题:asserts res 和res/raw的区别

      本文链接:https://www.haomeiwen.com/subject/tbzppttx.html