android res与assets资源的区别

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目录中可以建任意层次的子目录(只受操作系统的限制)

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值