如何根据风味自动更换drawable?

时间:2017-06-08 21:48:56

标签: android android-productflavors android-build-flavors android-flavors

我正在制作一个非常混乱的应用程序,第一次使用各种口味。应用程序有4,5种口味,都有相同的背景颜色,绘图等。只有徽标是不同的。

现在我必须以完全不同的布局制作新的味道。背景颜色应为黄色而不是灰色,可绘制的图像应为黑色而不是白色。问题是,我有100个不同的白色图像。有没有办法可以自动将它们改为黑色? (设计师可以重绘它们或任何黑色的东西,我可以将它们放在那种风格的可绘制文件夹中)或者我必须以编程方式检查是否使用了新的风格然后在每个使用白色drawable的小部件上调用setDrawable(newBlackImage)?这似乎是一种非常复杂的方法,因为所有drawable都是通过XML布局设置的。

他们使用各种口味的方式是创建资源bool文件然后检查代码是否某些键值为true / false然后隐藏/显示一些东西......所以我假设我应该做类似的事情,还是没有?

这就是我的一种口味的项目结构:

enter image description here

如您所见,每种风味只有不同的启动器和登录屏幕图标。每个都有自己的数组,bools和字符串资源文件。但是所有这些都与白色图标共享相同的布局资源和绘图。

1 个答案:

答案 0 :(得分:2)

我认为你已经以正确的方式行事了。通过为gradle文件中的每组drawable创建特定的flavor,您只需要为具有特定文件的flavor创建一个drawable文件夹。

例如,黑色'将需要一个可绘制的文件夹,其中将存储所有黑色背景图像。

为了使其正常运行,所有资源都必须存在,因此您不需要更改代码的任何部分。

您可以在此处找到快速指南: https://medium.com/@thiagolopessilva/the-handling-multiple-java-source-and-resources-using-flavors-on-gradle-18a4b581285b