
企业微信截图_20230214135456.png

企业微信截图_20230214135558.png
此时的解决办法如下:
1.先在values/attrs.xml下定义颜色属性(具体format类型可搜索关键词:Android attr format属性详解):
<attr name="charging_color9" format="reference|color"/>
<attr name="charging_img1" format="reference|color"/>
2.在values/style.xml中创建不同主题:
<style name="AppTheme_app_A" parent="AppTheme">
<item name="charging_color9">@color/color_333333</item>
<item name="charging_img1">@mipmap/icon_home_charge_a</item>
</style>
<style name="AppTheme_app_B" parent="AppTheme">
<item name="charging_color9">@color/color_222222</item>
<item name="charging_img1">@mipmap/icon_home_charge_b</item>
</style>
<style name="AppTheme_app_C" parent="AppTheme">
<item name="charging_color9">@color/color_111111</item>
<item name="charging_img1">@mipmap/icon_home_charge_c</item>
</style>
3.在BaseActivity中写如下代码:
override fun onCreate(savedInstanceState: Bundle?) {
when(app_type){
A->{
setTheme(R.style.AppTheme_app_A)
}
B->{
setTheme(R.style.AppTheme_app_B)
}
else->{
setTheme(R.style.AppTheme_app_C)
}
}
super.onCreate(savedInstanceState)
}
如果为了在打包不同app时,不增加包体积,不相关的图片icon和assets不会打包,可以在模块的build.gradle进行设置:
sourceSets {
main {
if (appType()== "A") {//app_A
res {
srcDirs 'src/main/res', 'src/main/a_res'
}
assets{
srcDirs 'src/main/assets', 'src/main/a_assets'
}
}else if (appType() == "B") {//app_B
res {
srcDirs 'src/main/res', 'src/main/b_res'
}
assets{
srcDirs 'src/main/assets', 'src/main/b_assets'
}
} else if (appType() == "C") {//app_C
res {
srcDirs 'src/main/res', 'src/main/c_res'
}
assets{
srcDirs 'src/main/assets', 'src/main/c_assets'
}
}else {
res {
srcDirs 'src/main/res'
}
assets{
srcDirs 'src/main/assets'
}
}
}
}
在不同app的build.gradle中定义
def appType(){
return ''A''
//return ''B''
//return ''C''
}
然后在模块的res同级目录下新建相应的文件夹:
a_res
a_assets
b_res
b_assets
c_res
c_assets
然后把相应的资源文件复制到相应的文件夹下,此时布局中的imageview引用图片资源时可以不用改名区分了。例如:在a_res下的mipmap有个名叫icon_more.png,那么b_res下的mipmap和c_res下的mipmap也可以取icon_more.png
这样就ok了