androidandroid手机移动程序开发

Android中使用gradient的一条建议

2017-02-02  本文已影响1428人  wutongke

建议

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

解析

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

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

这里是一个例子:

如果变化是三步:

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

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

所以其值实际为#000000

举个例子

其变化是:

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

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

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

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

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

wutongke
上一篇下一篇

猜你喜欢

热点阅读