我想向图像视图添加滤色器
我想向 ImageView
添加一个 ColorFilter
。
目前我正在使用:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
我已经检查了 PotterDuff
中的多种模式,例如 SRC_IN
、SRC
等,但我没有得到任何任何模式的差异...所有模式都会将整个 ImageView
变成完美的红色。
我需要在现有图像中混合红色,以便图像看起来带有红色调......
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
正确的方法是使用
PorterDuff.Mode.LIGHTEN
。所以更新后的代码将如下所示:
The right way to do it was using
PorterDuff.Mode.LIGHTEN
.So the updated code will be like:
您可以使用 android:tint (链接)。例子:
You can use android:tint (link) in you xml file. Example:
其他解决方案,您可以保留 PorterDuff.Mode.SRC_ATOP 模式并使用另一个 alpha 来获得透明颜色。
我使用 155 作为 Alpha 值:
Other solution, you could have kept
PorterDuff.Mode.SRC_ATOP
mode and use another alpha to have a transparent color.I use 155 as Alpha value:
这对我有用:
在 res/colors.xml 中:
在您的 Activity 中初始化过滤器并突出显示绘制:
然后将过滤器应用于 ImageView:
如果这不起作用,请尝试应用于 ImageView 可绘制:
希望有帮助。
This worked for me:
in res/colors.xml:
in your Activity initialize the filter and highlight paint:
then apply the filter to the ImageView:
if that doesn't work try applying to the ImageView drawable:
hope that helps.
在您的 xml 文件中,您可以使用 tint 例如,
如果您想以编程方式添加滤色器,则使用
您还可以使用以下代码删除此滤色器:
scratchImage_2.setColorFilter (空);
In your xml file you can user tint For example
If You want programmatically add color filter then use
You Can also remove this color filter using this code:
scratchImage_2.setColorFilter(null);