这个问题在某种意义上是对这篇文章的跟进,并且基于这篇文章中显示的解决方案。但无论如何,我会尝试以完整的方式询问它。
我有一个带有背景选择器的自定义按钮,该选择器由正常状态 Drawable 和按下状态 Drawable 组成。Drawables 颜色在方法onSizeChanged()
中使用PorterDuffColorFilter
getBackground().mutate().setColorFilter(backGroundColor, Mode.MULTIPLY);
这部分工作正常。但我想通过更改@kcoppock 在他的帖子中指出的色调来改进颜色选择。
- 我使用推荐的代码创建了一个
ColorMatrixColorFIlter
,我使用调试器在 Eclipse 中看到了矩阵,看起来还不错。 - 当我尝试使用
ColorMatrixColorFIlter
而不是PorterDuffColorFilter
按钮时,drawables 保持无色,就好像没有应用过滤器或没有效果一样。
第二个相关的问题:如何将选择器中的每个 Drawable 更改为不同的颜色?
编辑
更多信息,在使用调试器的代码之后,我看到了这个矩阵,色调偏移为 240 度(或 -120 度)(浮点数被剪裁到小数点后 3 位)
[ 0.004, 1.692, -0.696, 0.000, 0.000 ]
[ 0.196, 0.451, 0.353, 0.000, 0.000 ]
[ 1.001, 0.453, -0.454, 0.000, 0.000 ]
[ 0.000, 0.000, 0.000, 1.000, 0.000 ]
据我了解,该矩阵不在单位矩阵附近,您甚至可以看到每行总和恰好为 1,因此颜色应该发生变化。我应该在我的按钮上看到一些颜色变化。
此外,只是为了看到这个矩阵正在被采用,我对其进行了硬编码以删除 R 分量
[ 0 0 0 0 0 ]
[ 0 1 0 0 0 ]
[ 0 0 1 0 0 ]
[ 0 0 0 1 0 ]
然后我看到青色的按钮,这意味着过滤器正在工作,但我无法获得色调变化。