Android中使用gradient的一条建议

建议

使用xml定义一个gradient实现透明渐变时,要小心使用@android:color/transparent

解析

在绘制gradient时,android的framework使用两种颜色来代表gradient section的两个边缘(startColor – centerColor 、 centerColor – endColor、 startColor- endColor ),然后根据两个值计算插值绘制其余部分。

在计算插值时,framework实际时分别计算了颜色的四个分量(透明度Alpha、红Red、绿色Green、蓝色Blue),然后再组合起来的。

这里是一个例子:

《Android中使用gradient的一条建议》

如果变化是三步:

《Android中使用gradient的一条建议》

色值的四个分量的变化如下:

《Android中使用gradient的一条建议》

如果使用了@android:color/transparent,我们知道它代表全透明,但是在计算插值时,除了透明度,还有计算R、G、B,我们看一下android.graphicsColor.Transparent的值:

《Android中使用gradient的一条建议》

所以其值实际为#000000

举个例子

《Android中使用gradient的一条建议》

其变化是:

《Android中使用gradient的一条建议》

看着很奇怪,我们看下四个分量的变化过程:

《Android中使用gradient的一条建议》

到这里久就很容易理解了,我们正确的使用方式应该是:

《Android中使用gradient的一条建议》
《Android中使用gradient的一条建议》
《Android中使用gradient的一条建议》

这样R、G、B值不变化,只用透明度变化了。

这是一篇译文,原文地址:https://android.jlelse.eu/android-dev-tip-3-99da754151ad#.ajx7ebote

欢迎关注公众号wutongke,每天推送移动开发前沿技术文章:

《Android中使用gradient的一条建议》 wutongke

    原文作者:wutongke
    原文地址: https://www.jianshu.com/p/508d1cf8fb61
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞