Tim*_*nen 38 android imageview colorfilter
我正在尝试在imageview上实现一个简单的colorfilter,将黑色图像转换为白色图像.为了实现这一点,我做了以下事情:
weatherImg.setColorFilter(Color.BLACK, PorterDuff.Mode.MULTIPLY);
weatherImg.setImageResource(R.drawable.b_clouded_rain);
Run Code Online (Sandbox Code Playgroud)
我也尝试将滤色器中的颜色更改为红色和白色,但所有这些都没有效果,我做错了什么?
Tim*_*nen 84
尽管我不愿意回答我自己的问题但我发现了问题:我应该使用:
weatherImg.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)
jsi*_*era 26
这取决于您要应用的过滤类型.如果你想在带有透明胶片的图像上应用新颜色,那对我有用:
weatherImg.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
Run Code Online (Sandbox Code Playgroud)
如果你想了解更多有关这个PorterDuff过滤器的信息,我发现了一篇帮助我理解的goog文章:http://www.ibm.com/developerworks/java/library/j-mer0918/给它一个读:)
Kon*_*pko 18
在Android 6上有同样的问题.通过使用ImageView.getDrawable().setColorFilter()
而不是解决ImageView.setColorFilter()
.
我们使用这个代码
Drawable drawable = DrawableCompat.wrap(getDrawable(drawableResource));
drawable.mutate();
DrawableCompat.setTint(drawable, getColor(color));
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
public static int getColor(int id) {
return ContextCompat.getColor(getInstance().context, id);
}
public static Drawable getDrawable(int id) {
return ContextCompat.getDrawable(getInstance().context, id);
}
Run Code Online (Sandbox Code Playgroud)
对我来说,简单地调用setColorFilter()
就ImageView
不能正常工作。
imageView.setColorFilter(ResourcesCompat.getColor(resources, color, null)) //didnt work on 21, only 22+
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,在 API 21 上,我可以setColorFilter()
正常工作的唯一方法是将更改发布到视图消息队列。
imageView.post { imageView.setColorFilter(ResourcesCompat.getColor(resources, color, null)) } //this works on 21+
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44906 次 |
最近记录: |