tin*_*k90 1 android colors imageview colorfilter
我遇到了麻烦imageView.setColorFilter()。在我的应用程序中,我有深色模式(黑色背景、白色文本)和浅色模式(白色背景、黑色文本)。
针对API 21+,我使用由Android Studio生成矢量资源的图标是白色的,在默认情况下android:tint="#FFFFFF"并android:fillColor="#FF000000"在XML文件中。
根据材料设计,图标具有适用于不同状态的特定 alpha。我正在使用状态Active + Unfocused,其中黑色图标 = #8A000000和白色图标 = #B3FFFFFF。
在黑暗模式下,图标将在黑色背景上显示为灰色,这正是应用了 alpha 时应有的样子。但是,在浅色模式下,无论上面的 alpha 如何,图标都是 100% 黑色。我正在使用imageView.setColorFilter()with default应用颜色PorterDuff.Mode.SRC_ATOP。
这里发生了什么,我该如何解决?谢谢你。
在写这个问题的时候,我尝试了一些东西,并自己解决了这个问题。
问题是图标本身是 BLACK( #FF000000) 根据 vector xml 。Android Studio 仅将其着色为白色。
使用PorterDuff.Mode.SRC_ATOP,源像素和目标像素(均为黑色)的混合因此不会导致可见变化。为了完全替换原来的图标颜色,我PorterDuff.Mode.SRC_IN改用了。在这种情况下,我可以在两种模式下使用相同的向量 xml。
根据官方文档
PorterDuff.Mode.SRC_ATOP - 保留源像素未覆盖的目标像素。丢弃被源像素覆盖的目标像素。丢弃所有源像素。
PorterDuff.Mode.SRC_IN - 保留覆盖目标像素的源像素,丢弃剩余的源像素和目标像素。
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |