当我给它们一个alpha值时,我的颜色变得混乱了

时间:2012-07-28 02:21:58

标签: android colors

我有一个ListView,我希望这些项目在按下时显示与Holo Blue不同的颜色。所以我制作了一个可绘制的选择器,效果很好。

我的颜色为FFF100,颜色很漂亮。

但是,我认为它有点过于饱和,所以我想降低alpha,使其更像我的标签指示器,这是用图像文件完成的。它具有相同的颜色FFF100,但不透明度为50%。

所以我将颜色改为ARGB值,使用80(128/255)作为alpha值。所以我的颜色现在是80FFF100

但现在它看起来像一个奇怪的绿色!Screenshot

我的colors.xml:

<resources>
    <color name="putio_accent">#FFF200</color> **This is the standard yellow color. Using this works fine, but it's too saturated, like I said before.
    <color name="putio_accent_selected">#80FFF100</color> **This should be the same, but with 50% alpha..
</resources>

为什么会发生这种情况?!

3 个答案:

答案 0 :(得分:1)

不确定为什么它会在没有看到代码的情况下完全执行此操作,但您可以随时将ARGB颜色转换为RGB,使用:foreground * alpha + background *(1-alpha)

或拍摄快照并直接拉出颜色(这会改变您想要的颜色f7f077)。当然,如果你的背景不牢固,那么你不能这样做,但是从你的照片看来并不是这样。

答案 1 :(得分:1)

修正了它。它出现绿色的原因是因为出于某种原因,Android显示默认的按下颜色(Holo blue)和与我的相结合。蓝色+黄色=绿色!

我通过在行的XML中取出这行来修复它:

android:background="@drawable/putio_clickable_bg"

并将此行放入我的ListView:

android:listSelector="@drawable/putio_tab_indicator"

为什么要修复它,我不知道。也许这是Android中的一个错误?

答案 2 :(得分:0)

我不知道在alpha列中使用其他数字(如'80')时会发生什么。我只使用了'00',尝试一下,因为这样可以提供具有约50%不透明度的完美色彩。似乎不使用0会改变颜色。

希望这有帮助。