更改Android

时间:2018-05-23 08:33:51

标签: android android-imageview

我有ImageView,来源为ImageAsset

我的图片是一个加号的圆圈,我希望只为圆圈的内部着色。我怎么做?

使用setBackgroundColor颜色整个视图,从而得到如下的方形背景:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以为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. 只需点击文件夹上的右键(可绘制,例如),然后选择:
  2. enter image description here

    1. 然后选择:
    2. enter image description here