如何将从毕加索加载的图像视图的颜色从绿色更改为红色

How to change color of a imageview that I load from Picasso from Green to Red

这是我的代码:

backPic.setScaleType(ImageView.ScaleType.FIT_CENTER);
backPic.setColorFilter(ContextCompat.getColor(context, R.color.red), android.graphics.PorterDuff.Mode.MULTIPLY);
Picasso.with(context).load(icon).into(backPic, new com.squareup.picasso.Callback() {
    @Override
    public void onSuccess() {
    }

    @Override
    public void onError() {
        UserVehicle.setVehicleClassPic(getVclass().getId(), backPic);
    }
});

初始图片是这样的:

这是我现在得到的:

我怎样才能使第二张图片中的自行车是红色的,而不是灰色的绿色?

我发送到图像过滤器的颜色是红色。

请阅读here:

问题出在这一行:

  backPic.setColorFilter(ContextCompat.getColor(context, R.color.red), 
  android.graphics.PorterDuff.Mode.MULTIPLY);

具体来说:

  PorterDuff.Mode.MULTIPLY

你想要:

 PorterDuff.Mode.DST

我相信。但是如果你阅读我提供的文档,你会看到不同模式的作用。请记住,当您对颜色进行数学运算时,它们会做一些有趣的事情。绿色和红色相乘会给你那种时髦的灰色,ADD 模式本来是我的第一选择,但这会给你一种时髦的棕色。 DST 用新像素替换旧像素,防止混色。

祝你好运!

根据 André Sousa 的评论,我编写了以下代码:

   Picasso.with(context).load(icon).into(backPic, new com.squareup.picasso.Callback() {
                @Override
                public void onSuccess() {
                    DrawableCompat.setTint(backPic.getDrawable(), context.getResources().getColor(R.color.red));
                }

                @Override
                public void onError() {
                    UserVehicle.setVehicleClassPic(getVclass().getId(), backPic);
                }
            });

所以它会在 Picasso 图像加载后设置色调,这有效