Android 如何根据口味自动更改抽丝?

Android 如何根据口味自动更改抽丝?,android,android-productflavors,android-build-flavors,android-flavors,Android,Android Productflavors,Android Build Flavors,Android Flavors,我正在开发一款非常混乱的应用程序,而且是第一次使用口味。这款应用有4,5种口味,所有的都有相同的背景色、可绘制的图案等。只有徽标是不同的 现在我必须用完全不同的布局制作一种新的口味。背景色应为黄色而不是灰色,可绘制图像应为黑色而不是白色。问题是,我有100种不同的白色图像。有没有办法我可以自动把它们改成黑色?(设计师可以将它们或任何东西重绘为黑色,我可以将它们放在该风格的drawable文件夹中)或者我必须通过编程检查是否使用了新风格,然后在每个使用白色drawable的小部件上调用setDra

我正在开发一款非常混乱的应用程序,而且是第一次使用口味。这款应用有4,5种口味,所有的都有相同的背景色、可绘制的图案等。只有徽标是不同的

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

他们使用flavors的方式是创建资源bool文件,然后签入代码,如果某个键的值为true/false,则隐藏/显示某些内容。。。所以我想我应该做一些类似的事情,或者不

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


正如您所看到的,每种风格只有不同的启动程序和登录屏幕图标。此外,每个都有自己的数组、布尔值和字符串资源文件。但它们都共享相同的布局资源和带有白色图标的绘图功能。

我认为您已经做对了。通过在gradle文件中为每组可绘制文件创建特定的样式,您只需要为具有特定文件的样式创建一个可绘制文件夹

例如,味道“黑色”需要一个可绘制的文件夹,其中存储所有黑色背景图像

为了让它工作,所有的资源必须存在于所有的风格中,这样您就不需要更改代码的任何部分

您可以在此处找到快速指南:

如果使用VectorDrawables而不是图像资源,则可以通过编程方式对它们进行着色,而无需使用不同的文件。不幸的是,它们都是图像资源:/Designer告诉我,他可以将黑色的发送给我,所以这不是问题。主要问题是,我有一个布局,将imageview的src设置为白色图标之一。我只是想避免把它改成黑色的。这是一篇很棒的文章,tnx人!现在我更明白了,所以我更新了我的问题,这样你们就可以看到我的项目结构是否错误。可能问题是我所有的白色图标都在主可绘制文件夹内,所有布局都在主布局文件夹内。。每种口味只有不同的启动图标。所以,如果我在一个布局中改变了一些东西,所有的口味都会发生变化。如果我没弄错的话,我在上面展示的这个味道结构应该有一个带黑色图标的可绘制文件夹,对吗?但是为了分配这些图标,它还需要所有的布局?也许因为所有的口味都使用相同的布局,我可以创建并将所有的黑色图标放在这个味道可绘制文件夹中,并将它们命名为白色?所以版面会有带有android:src=“@drawable/ic_add_white_24dp”字段的ImageView,所以如果我的口味在它的drawable(但它会是黑色)里面有ic_add_white_24dp,它会使用这个字段。这是正确的。
main
中的资源是您的基线,flavor文件夹中具有相同路径/名称的任何资源都将在应用程序中覆盖它们。很抱歉响应延迟,但您答对了。