Android中的res目录是资源文件存放的根目录,用于存储应用程序所需的非代码资源,例如图片、布局、字符串、颜色等。该目录下的资源会被编译到APK中,并通过R类生成唯一的资源ID供代码引用。以下是res目录的主要子目录及其作用:
1. drawable
存储图片资源(如PNG、JPEG)或XML定义的矢量图形。根据屏幕密度可细分目录(如drawable-hdpi、drawable-xhdpi),系统会自动匹配最佳资源。
2. layout
存放XML布局文件,定义Activity、Fragment或组件的界面结构。支持通过
3. values
存储各种常量值,包括:
- strings.xml(字符串)
- colors.xml(颜色值)
- styles.xml(主题和样式)
- dimens.xml(尺寸值)
支持国际化,通过后缀(如values-zh)适配不同语言。
4. mipmap
专用于应用图标,与drawable类似但更强调图标的多分辨率管理。推荐将启动图标放在mipmap目录中。
5. anim
存放动画资源文件(XML),包括补间动画(tween)和帧动画(frame-by-frame)。
6. raw
存储原生文件(如音频、视频),资源会原样打包,需通过InputStream读取。
7. xml
存放任意XML配置文件,如网络安全配置(network_security_config.xml)。
8. font
存放字体文件(如TTF、OTF),支持通过XML或代码加载。
扩展知识:
资源命名规范:仅允许小写字母、数字和下划线,且不能以数字开头。
资源合并:构建时,不同构建变体(flavor)的资源会合并,冲突时优先级为:buildType > productFlavor > main。
动态资源加载:Android 8.0+支持通过ResourcesLoader动态加载资源,实现热更新。
资源优化:使用WebP格式替代PNG可减少体积,矢量图XML需注意兼容性。
正确使用res目录能提升应用性能与维护性,例如多密度资源可减少运行时缩放开销,而字符串国际化则避免硬编码。