导读
- 移动开发知识体系总章(Java基础、Android、Flutter)
- assets目录与res目录的区别
assets目录与res目录的区别
assets | res/raw | res/drawable | |
---|---|---|---|
获取资源方式 | 文件路径+文件名 | R.raw.xxx | R.drawable.xxx |
是否被压缩 | NO | NO | YES(失真压缩) |
能否获取子目录资源 | YES | NO | NO |
- res会在R.java生成索引ID,在打包的时候判断资源有没有用到,没用到的时候不会被打包进apk中(res/raw文件夹除外),而assets不会。
- res用getResource()访问,assets用AssetsManager访问。
- res/raw与assets里的文件在打包的时候都不会被系统二进制编译,都被原封不动打包进APK,通常用来存放游戏资源、脚本、字体文件等。但res/raw不可以创建子文件夹,而assets可以。
- res/xml会被编译成二进制文件。res/anim存放动画资源。
assets:用于存放需要打包到应用程序的静态文件,以便部署到设备中。与res/raw不同点在于,assets支持任意深度的子目录。这些文件不会生成任何资源ID,必须使用/assets开始(不包含它)的相对路径名。
res:用于存放应用程序的资源(如图标、GUI布局等),将被打包到编译后的Java中。不支持深度子目录.
在android开发中,我们离不开资源文件的使用,从drawable到string,再到layout,这些资源都为我们的开发提供了极大的便利。
资源文件
/res/drawable
存放布局文件
/res/layout
存放动画资源
/res/anim
存放基于XML的菜单描述
res/menu
存放通用的文件, 该文件夹内的文件将不会被编译成二进制文件,按原样复制到设备上。
res/raw
存放字符串、尺寸值
res/values
存放通用的XML文件
res/xml