在我的应用中,我正在尝试更改标记图像的颜色。但它并不完全符合我希望它的工作方式。
Drawable drawable = getDrawable(R.drawable.ic_marker);
drawable.setColorFilter(item.getColor()), PorterDuff.Mode.ADD);
drawable看起来像这样(下图),当我添加ColorFilter时,标记获得正确的颜色,白色保持白色,但图像的透明部分也获得颜色。我只希望黑色改变,白色和透明的部分必须保持这种状态。
答案 0 :(得分:0)
这是我用于setColorFilter,ColorMatrix和ColorMatrixColorFilter的实验所用的内容:
drawable.setColorFilter(item.getColorMatrix());
或强>:
drawable.setColorFilter(new ColorMatrixColorFilter(getColorMatrix5()));//custom 5
//custom 5
private ColorMatrix getColorMatrix5()
{
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.setSaturation(0);//make it greyscale
ColorMatrix blueMatrix = new ColorMatrix(new float[] {
0, 0, 0, 0, 0, // red
0, 0, 0, 0, 0, // green
1, 1, 1, 1, 1, // blue
1, 1, 1, 1, 1 // alpha
});
// Convert, then scale and clamp
colorMatrix.postConcat(blueMatrix);
return colorMatrix;
}//getColorMatrix5
请参阅PorterDuff,PorterDuff.Mode
,PorterDuffXfermode
,ColorFilter
,ColorMatrix,ColorMatrixColorFilter,PorterDuffColorFilter,{{3} },Canvas
。