在 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,请按照以下步骤操作:

  1. 只需在文件夹(例如可绘制)上单击右键并选择:

  1. 然后选择: