我想用颜色填充PNG图标。
这是我目前的代码:
ingredientImageView.setImageResource(context.getResources().getIdentifier("ico_" + ingredient.replace("-", "_"), "drawable", context.getPackageName()));
ingredientImageView.setColorFilter(iconTextColor,PorterDuff.Mode.SRC_IN);
此代码使我的图标如下:
iconTextColor这里是黑色的。但是滤色器填充了图标的白色部分。您可以在下面找到图标:
黑色线条应该成为我想要的颜色。但是叶子内部(在那个图标中)应该保持白色。
所以,透明 - >透明,白色 - >白色,黑色 - > dynamicColor
我该怎么做?
答案 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);