如何将从毕加索加载的图像视图的颜色从绿色更改为红色
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 图像加载后设置色调,这有效
这是我的代码:
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 图像加载后设置色调,这有效