【问题标题】:Android - Dynamic Coloring of Drawables on a Dark BackgroundAndroid - 在深色背景上对 Drawable 进行动态着色
【发布时间】:2016-09-08 02:14:03
【问题描述】:

说明

在尝试更改位于深色背景上的可绘制对象的颜色时,我遇到了颜色会稍微改变的问题。

在下图中,您将看到具有白色背景的顶视图具有深蓝色图标颜色,但位于深色背景之上的下方视图具有浅蓝色图标。

Image #1

无论包含视图的背景颜色如何,可绘制颜色都应保持一致。

代码

    ImageView fairInfoEmailImageView = (ImageView) getView().findViewById(R.id.fairInfoEmailImageView);
    fairInfoEmailImageView.setColorFilter(dashboardIconColor, PorterDuff.Mode.MULTIPLY);

    ImageView fairInfoSurveyImageView = (ImageView) getView().findViewById(R.id.fairInfoSurveyImageView);
    fairInfoSurveyImageView.setColorFilter(dashboardIconColor, PorterDuff.Mode.MULTIPLY);

注意*:下面的图像是通过 ImageView 的可绘制对象都是白色的,然后应用覆盖颜色的 MULTIPLY 颜色过滤器来实现的。

尝试

  • 尝试了 ColorFilters、Tints 等,但我相信这些会将背景颜色带入方程式。

问题

有没有办法在不使用 ColorFilter 的情况下动态更改可绘制对象的颜色?

随时询问更多代码或有关该问题的任何问题。

【问题讨论】:

  • 你的APP最低API等级是多少??
  • 15。谢谢你的提问。我会更新问题。
  • 为了加快速度,我建议在这里materialdesignicons.com 获取您的图标,您可以在其中自定义颜色,因此有 2 个副本。它们体积小,因此不会影响您的应用程序的大小。我问的是最小 APi,因为从 android 5x 和 ApI 20+ 开始,您可以使用 Vector drawables,因此很容易通过代码更改颜色。
  • 我忘了提 -- 在这里也可以通过代码查看可能的解决方案 --> stackoverflow.com/questions/20121938/…
  • 非常感谢 Tasos 的帮助,但这些实际上是 Vector drawables。我已经尝试了所有可能的着色方法,但图标实际上是相同的颜色(请参阅下面的 Nick Yelito 的回答)。您可以通过查看像素来验证。这是由对比背景引起的视觉错觉,哈哈。再次感谢您的 cmets。

标签: android


【解决方案1】:

图片中的这两个图标颜色相同。 R19 G89 B116 根据 MSPaint。

这是一种视觉错觉,使颜色在不同背景下看起来不同,但它们是相同的。

【讨论】:

  • 哈哈,我相信是的。用滴管工具仔细检查它,但对我来说结果是一样的
  • 已验证。叹。我正在为一个幻觉扯掉我的头发。谢谢你指出。我赞成你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
相关资源
最近更新 更多