gpt4 book ai didi

android - ImageView setColorFilter alpha 丢失

转载 作者:行者123 更新时间:2023-11-29 23:45:56 30 4
gpt4 key购买 nike

我在使用 imageView.setColorFilter() 时遇到问题。在我的应用程序中,我有深色模式(黑色背景、白色文本)和浅色模式(白色背景、黑色文本)。

针对 API 21+,我使用由 Android Studio 生成的矢量 Assets 图标,它是白色的,默认情况下 android:tint="#FFFFFF"android:fillColor="# FF000000" 在 xml 文件中。

根据 material design , 图标有一定的 alpha 应用于不同的状态。我使用的状态是 Active + Unfocused,其中黑色图标 = #8A000000 和白色图标 = #B3FFFFFF

在深色模式下,图标会在黑色背景上显示为灰色,这正是应用了 alpha 后的样子。然而,在浅色模式下,无论上面的 alpha 值如何,图标都是 100% 黑色。我使用默认 PorterDuff.Mode.SRC_ATOPimageView.setColorFilter() 应用颜色。

这里发生了什么,我该如何解决?谢谢。

最佳答案

在写这个问题的时候,我尝试了一些东西,然后自己解决了这个问题。

问题是根据向量 xml,图标本身是黑色的 (#FF000000)。 Android Studio 仅将其着色为白色。

使用 PorterDuff.Mode.SRC_ATOP,源像素和目标像素(均为黑色)的混合因此不会导致可见变化。为了完全替换原来的图标颜色,我使用了 PorterDuff.Mode.SRC_IN 代替。在这种情况下,我可以在两种模式下使用相同的矢量 xml。

根据官方文档

PorterDuff.Mode.SRC_ATOP - Keeps the destination pixels that are not covered by source pixels. Discards destination pixels that are covered by source pixels. Discards all source pixels.

PorterDuff.Mode.SRC_IN - Keeps the source pixels that cover the destination pixels, discards the remaining source and destination pixels.

关于android - ImageView setColorFilter alpha 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51408167/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com