在 Android 中更改图像填充颜色
Change image fill color in Android
我有一个 ImageView
,来源是 ImageAsset
。
我的图片是一个带加号的圆圈,我只想给圆圈的内部上色。我怎么做?
使用 setBackgroundColor
为整个视图着色,从而提供如下方形背景:
.
您可以为 ImageView
应用色调。如果它是透明的,这不会影响你的背景,只会影响彩色部分(即圆圈和加号)
imageView.setColorFilter(ContextCompat.getColor(context, R.color.COLOR_YOUR_COLOR),
android.graphics.PorterDuff.Mode.MULTIPLY);
更新
使用 android.graphics.PorterDuff.Mode.SRC_IN
也可以(如果您不需要将源像素和目标像素相乘)
更新 2
由于目标部分没有着色,因此最好的解决方案是使用 VectorDrawable
.
您可以使用 VectorChildFinder 查找 SVG 资源的内部部分并更改其颜色。
VectorChildFinder vector = new VectorChildFinder(this, R.drawable.my_vector, imageView);
VectorDrawableCompat.VFullPath path1 = vector.findPathByName("path1");
path1.setFillColor(Color.RED);
imageView.invalidate();
要创建您的 SVG,请按照以下步骤操作:
- 只需在文件夹(例如可绘制)上单击右键并选择:
- 然后选择:
我有一个 ImageView
,来源是 ImageAsset
。
我的图片是一个带加号的圆圈,我只想给圆圈的内部上色。我怎么做?
使用 setBackgroundColor
为整个视图着色,从而提供如下方形背景:
您可以为 ImageView
应用色调。如果它是透明的,这不会影响你的背景,只会影响彩色部分(即圆圈和加号)
imageView.setColorFilter(ContextCompat.getColor(context, R.color.COLOR_YOUR_COLOR),
android.graphics.PorterDuff.Mode.MULTIPLY);
更新
使用 android.graphics.PorterDuff.Mode.SRC_IN
也可以(如果您不需要将源像素和目标像素相乘)
更新 2
由于目标部分没有着色,因此最好的解决方案是使用 VectorDrawable
.
您可以使用 VectorChildFinder 查找 SVG 资源的内部部分并更改其颜色。
VectorChildFinder vector = new VectorChildFinder(this, R.drawable.my_vector, imageView);
VectorDrawableCompat.VFullPath path1 = vector.findPathByName("path1");
path1.setFillColor(Color.RED);
imageView.invalidate();
要创建您的 SVG,请按照以下步骤操作:
- 只需在文件夹(例如可绘制)上单击右键并选择:
- 然后选择: