如何使用Android中的颜色填充B& W PNG图标?

时间:2017-01-09 10:11:32

标签: android tint colorfilter

我想用颜色填充PNG图标。

这是我目前的代码:

            ingredientImageView.setImageResource(context.getResources().getIdentifier("ico_" + ingredient.replace("-", "_"), "drawable", context.getPackageName()));
            ingredientImageView.setColorFilter(iconTextColor,PorterDuff.Mode.SRC_IN);

此代码使我的图标如下:

enter image description here

iconTextColor这里是黑色的。但是滤色器填充了图标的白色部分。您可以在下面找到图标:

enter image description here

黑色线条应该成为我想要的颜色。但是叶子内部(在那个图标中)应该保持白色。

所以,透明 - >透明,白色 - >白色,黑色 - > dynamicColor

我该怎么做?

3 个答案:

答案 0 :(得分:0)

您无法更改.png图标的颜色,但可以更改xml格式的矢量图标的颜色。 要更改图标的颜色,只需使用其他颜色导入图标。

答案 1 :(得分:0)

您可以尝试使用随机r g b值定义自定义ColorMatrix:

    Random rand = new Random();
    int r = rand.nextInt(256);
    int g = rand.nextInt(256);
    int b = rand.nextInt(256);

    ColorMatrix cm = new ColorMatrix();
    cm.set(new float[] {
                        1, 0, 0, 0, r,
                        0, 1, 0, 0, g,
                        0, 0, 1, 0, b,
                        0, 0, 0, 1, 0 }); // last line is antialias
    paint.setColorFilter(new ColorMatrixColorFilter(cm));
    canvas.drawBitmap(myBitmap, toX, toY, paint);

答案 2 :(得分:0)

我对你的问题不太确定,但每当我需要改变.png图像的颜色时,我只是使用 tint 方法。您可以看到以下代码以获取帮助

XML CODE

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ss"
        android:tint="@color/colorPrimary"
        />

java代码

getBackground().setTint(tintColor);