Android中下层module调用上层module资源的方法

Android中一个app往往包含多个module,而各个module之间又有一定的依赖关系。而良好的依赖关系是线性的,而不应是网状的。简单来说就是:两个module之间只能是单向依赖,而不能是双向。这样才能保持清晰的依赖关系、降低各module之间的耦合度、降低维护成本。
但是线性的依赖关系,也可能带来一个小问题,那就是:如果在下层module中想引用上层module的一个资源,就难以实现了。因为下层module代表的是更底层的逻辑,是被上层module依赖的。既然是下层module,为什么会有这种引用资源的需求呢?
举个例子:在下层module中,要实现一个公用的通知栏组件,而这个组件需要设置app的图标,所以需要调用上层module中定义的app图标资源。
如果要解决上述问题,有2个方案:
1.在下层module中添加图标资源。这种方案有2个缺点:资源重复定义;如果图标要更换,需要同时替换两个module中的源文件。
2.引用上层module中的图标资源。这种方案有1个缺点:如果上层module中的图标资源重命名或删除,那下层module中将找不到对应的资源。

方案1的解决方案比较简单,步骤略。
方案2就是本文想要介绍的方案,步骤如下:
1.下层module中的res/values目录下新建一个ids.xml文件,并将需要引用的上层module的资源定义在这里。比如想要引用一个图标资源,一个字符串资源,文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="ic_launcher" type="drawable"/>
    <item name="app_name" type="string"/>
</resources>

2.下层module中需要引用上述资源的代码或布局中直接使用即可,就像使用当前module中定义的资源一样。

注:这种引用方式支持几乎所有的资源类型,亦即type,常用的type类型有:drawable、color、dimen、id、layout、string、style等。

猜你喜欢

转载自blog.csdn.net/chenzhengfeng/article/details/119544519
今日推荐