3

假设我在 Android 中有一个 ShapeDrawable。不是位图。我想用另一种颜色动态替换其中的单色(笔触颜色)。新的所需颜色在设计时是未知的,并且不能放入可绘制资源中。

比如从图1开始(其中黑色代表我要替换的颜色,方格背景是没有被形状轮廓覆盖的背景):

图片1

到图像 2,其中红色是我想要的颜色:

图 2

如有必要,我可以使用 alpha 蒙版构建形状 - 例如,如果需要,使白色或黑色透明,或者使轮廓变为绿色。白色填充颜色必须在最终结果中保持白色。

是否可以使用标准滤色器 - ColorMatrixColorFilter 或 PorterDuffColorFilter 来实现?如果是这样,我很难找出特定的过滤器。我认为自定义 ColorFilter 是不可能的。

4

2 回答 2

6

在您想要设置为任意颜色的黑色边框和白色内部的特定情况下,您可以在 ADD 模式下使用PorterDuff过滤器。由于它是饱和的,它不会对白色区域产生任何影响,并且由于黑色为零,添加颜色将有效地将所有黑色区域设置为该颜色。

例如将其设置为红色:

 drawable.setColorFilter(0x00ff0000, PorterDuff.Mode.ADD);
于 2015-06-24T04:00:19.443 回答
-3

本教程可能会有所帮助。根据这个,您可以用所需的颜色替换图像的白色部分。

以编程方式更改可绘制图标的颜色http://takeoffandroid.com/uncategorized/changing-color-of-drawable-icon-programmatically/

于 2015-06-24T00:29:01.223 回答