You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何像mipmap文件夹一样在res/drawable内创建子文件夹?

Android中实现Drawable资源子文件夹管理的可行方案

其实Android原生的资源打包系统(aapt)并不支持在drawable这类标准资源目录下创建子文件夹哦——因为它只会识别res目录下的一级标准目录(比如drawable、layout、values),子文件夹里的资源不仅不会被打包进APK,还没法通过R类引用,等于白放。

不过别担心,有几个实用的替代方案能帮你实现类似的分类管理需求:

  • 用命名前缀做逻辑分类
    这是最省心的办法,给不同类型的资源加统一前缀,比如图片资源都加img_前缀,矢量图加vec_前缀:img_logo.png、img_background.png、vec_button_shade.xml、vec_profile_shade.xml。这样在Android Studio里搜索前缀就能快速定位,排序后也能自动归为一组,管理起来很方便。

  • 自定义资源目录+Gradle配置(推荐)
    如果你一定要物理上分开文件夹,可以在res目录下创建自定义的一级目录,比如drawable_images和drawable_vectors,然后在模块的build.gradle文件里配置sourceSets,把这些目录加入资源集合:

    android {
        sourceSets {
            main {
                res.srcDirs = [
                    'src/main/res',
                    'src/main/res/drawable_images',
                    'src/main/res/drawable_vectors'
                ]
            }
        }
    }
    

    配置后,aapt会把这些目录里的资源当成普通drawable资源处理,你依然可以用R.drawable.logo、R.drawable.button_shade这样的方式引用,同时物理上的分类也清晰了。

  • 用Assets目录管理(适合特殊场景)
    如果你的资源不需要在布局或代码里通过R类引用,而是需要动态加载,可以把它们放在assets目录下的子文件夹里(比如assets/images/、assets/vectors/)。不过这种方式需要用AssetManager手动加载资源,没法直接在XML布局里用@drawable引用,适合一些非UI核心的资源场景。

总的来说,第二种方案既满足了物理分类的需求,又不影响资源的正常引用,是大型项目里最常用的做法。

内容的提问来源于stack exchange,提问作者Dinesh Kumar Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:14:47