Android Studio 下对资源进行更好地分包方案

1. 前言

我们知道,Android Studio 默认是要我们把资源放在 res 目录下面的。

如果资源较少,那么把资源放在 res 下面是没有问题的。

但是,假如我们的资源非常多,还会没有问题吗?

每个分辨率的 drawable 目录下都有 300 张图片,如何快速地找到对应功能页面的图片吗?如何快速地把一个功能的代码及其资源迁移到一个新的项目中呢?

相信大家开发中也遇到过类似的困惑,接着看第二部分吧。

2. 正文

2.1 第一种解决方案

查看到 Android Studio 下对资源进行分包 这篇文章,方案如下:
在这里插入图片描述
第一步,新增了 res_coreres_sub 两个资源包;
第二步,在 app 模块的 build.gradle 文件中添加:

android {
    ...
    sourceSets {
        main {
            res.srcDirs('src/main/res', 'src/main/res_core', 'src/main/res_sub')
        }
    }
}

这个方案实现了对资源进行分包处理,避免所有的资源都在一个目录下,不清晰的问题。

2.2 第一种解决方案的不足之处

但是,这种方案还是有点不尽如人意。项目中有很多模块时,就需要建立多个 res_xxx 的目录,如下图:
在这里插入图片描述
build.gradle 中需要添加:

android {
   ...
    sourceSets {
        main {
            res.srcDirs('src/main/res', 'src/main/res_home','src/main/res_hot','src/main/res_ringtone',
                    'src/main/res_search','src/main/res_settings','src/main/res_video','src/main/res_videoedit')
        }
    }
}

不足的地方有:

  • 现在想找 home 包对应的资源,不得不向下移动屏幕,找到 red_home
  • build.gradle 中添加的内容有些繁琐。

期望的是,属于哪个包的资源就和哪个包的代码放在一起

2.3 第二种解决方案

属于哪个包的资源就和哪个包的代码放在一起,看效果图:
在这里插入图片描述
哪个包的资源就放在那个包下的 res 目录里面即可。

appbuild.gradle 文件中配置:

def srcDirs = [
        'com/example/approach2/ui/home',
        'com/example/approach2/ui/hot',
        'com/example/approach2/ui/ringtone',
        'com/example/approach2/ui/search',
        'com/example/approach2/ui/settings',
        'com/example/approach2/ui/video',
        'com/example/approach2/ui/videoedit',
]

android {
     sourceSets {
        main {
            srcDirs.forEach {
                main.res.srcDirs += 'src/main/java/' + it + '/res'
            }
        }
    }
}

3. 最后

本文提供一种优化后的资源分包方案,希望能够帮助到大家。代码在这里

参考

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

willwaywang6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值