Android开发:矢量图应放assets还是drawable?drawable可建子文件夹吗?
关于Android矢量图存放与管理的问题
一、上千个矢量图该放assets还是drawable?
优先选drawable目录,原因如下:
- drawable是Android官方为矢量图(VectorDrawable)设计的标准存放位置,系统会自动处理不同屏幕dpi的缩放适配,无需手动调整。
- 可直接通过资源ID(如
R.drawable.icon_xxx)在布局XML或代码里引用,比assets的使用成本低很多。 - 支持矢量图的高级特性,比如tint着色、矢量动画(AnimatedVectorDrawable),这些在assets中无法直接实现,手动处理会徒增工作量。
如果放在assets目录,需通过AssetManager读取文件并自行解析矢量图内容,不仅麻烦,还浪费系统自带的适配能力,上千个图的管理和引用成本会极高,完全不推荐。
二、drawable目录能不能建子文件夹分类?
不行,Android的资源编译系统不支持在drawable目录下创建子文件夹分类资源——不管是矢量图还是位图,子文件夹内的资源都会被编译忽略,无法被识别引用。
针对上千个矢量图的管理,给你几个实用替代方案:
- 统一命名规范:给图标加前缀区分类别,比如
icon_nav_home、icon_setting_theme,用下划线分隔类别与名称,便于查找。 - 利用Android Studio的Resource Manager:给不同类别的矢量图打标签,比如“导航栏图标”“设置页图标”,需要时通过标签筛选,管理更直观。
- 拆分到不同模块:如果项目是多module结构,可把不同类别的矢量图放到对应module的drawable目录,比如支付相关图标放到pay模块,既实现分类又不影响资源引用。
内容的提问来源于stack exchange,提问作者Zhiliand
相关产品推荐
相关产品推荐

