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

时间: 2024-07-29 04:08:41

android res与assets资源的区别的相关文章

android raw与assets资源

*res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. *res/raw和assets的不同点: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename:assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类. 2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹 *读取文件资源:

关于Android 中 raw的用法以及与assets 的的区别和共同点

一.raw与assets的区别及共同点 (1) res/raw和assets的相同点 两个目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. (2) res/raw和assets的不同点: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.raw.filename: assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类. 2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是a

[转载] Android raw与assets区别

*res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. *res/raw和assets的不同点:1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename:assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类.2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹 *读取文件资源: 1

Android开发之assets目录下资源使用总结

预前知识: Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可: 第二种是assets目录下存放的原生资源文件: 因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们.那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.ap

Android的xml/assets/raw资源使用具体解释

一.assets/xml/raw资源介绍 1.assets资源文件夹:assets文件夹下存放的资源代表应用无法直接訪问的原生资源,这些文件将原封不动的存储到设备上,不会被编译为二进制形式,訪问方式是通过文件名称而不是资源ID.应用程序通过AssetManager以的字节流的形式来读取资源文件.assets与res/raw的差别是assets支持随意深度的子文件夹.这些资源文件不会生成不论什么资源ID. Android应用訪问assets文件夹资源过程例如以下: (1)先在Activity中调用

Android的xml/assets/raw资源使用详解

一.assets/xml/raw资源介绍 1.assets资源目录:assets目录下存放的资源代表应用无法直接访问的原生资源,这些文件将原封不动的存储到设备上,不会被编译为二进制形式,访问方式是通过文件名而不是资源ID.应用程序通过AssetManager以的字节流的形式来读取资源文件.assets与res/raw的区别是assets支持任意深度的子目录,这些资源文件不会生成任何资源ID.Android应用访问assets文件夹资源步骤如下: (1)先在Activity中调用getAssets

Android res/raw vs assets

common: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. difference: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename:assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类.2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹 *读取文件资源: res/raw:InputStream is

Android Studio增加assets目录、raw目录

assets与res/raw不同 assets目录是Android的一种特殊目录,用于放置APP所需的固定文件,且该文件被打包到APK中时,不会被编码到二进制文件. Android还存在一种放置在res下的raw目录,该目录与assets目录不同. 注意点: 1. assets目录不会被映射到R中,因此,资源无法通过R.id方式获取,必须要通过AssetManager进行操作与获取:res/raw目录下的资源会被映射到R中,可以通过getResource()方法获取资源. 2. 多级目录:ass

android中的用户资源访问(一)

这几天要总结一下android开发中的用户资源访问. android中的用户资源存在项目工程中res文件夹下,有字符串.颜色.大小.数组.布局.样式.主题等资源,这些资源可以在xml文件中引用,也可以在android源码文件中使用,今天总结一下字符串.颜色.大小.数组.布局和图片资源. 总的来说,在xml文件中引用的格式为[<package>.]@/XXX/name:在源码中引用格式是[<package>.]R.XXX.name. 先贴上在xml文件中引用的代码(在布局xml文件中