将ShapeDrawable中的单个(黑色)颜色替换为Android

时间:2015-06-24 00:11:58

标签: android html shapedrawable colormatrix

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

例如,从图片1开始(黑色代表我想要替换的颜色,方格背景是形状轮廓未覆盖的背景):

picture 1

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

picture 2

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

使用标准滤色镜 - ColorMatrixColorFilter或PorterDuffColorFilter可以实现吗? 如果是这样,我很难搞清楚具体的过滤器。 我假设不可能使用自定义ColorFilter。

2 个答案:

答案 0 :(得分:5)

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

e.g。将其设置为红色:

 drawable.setColorFilter(0x00ff0000, PorterDuff.Mode.ADD);

答案 1 :(得分:-2)

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

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