Android中使用gradient的一条建议
16lz
2022-06-03
建议
使用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.graphics
中Color.Transparent
的值:
所以其值实际为#000000
。
举个例子
其变化是:
看着很奇怪,我们看下四个分量的变化过程:
到这里久就很容易理解了,我们正确的使用方式应该是:
这样R、G、B值不变化,只用透明度变化了。
这是一篇译文,原文地址:https://android.jlelse.eu/android-dev-tip-3-99da754151ad#.ajx7ebote
欢迎关注公众号wutongke,每天推送移动开发前沿技术文章:
wutongke更多相关文章
- Android设置透明、半透明等效果
- Android设置透明、半透明等效果
- Android(安卓)UI设计:ImageView
- android Button 颜色的变化(点击,放开,点击不放)
- Android设置透明、半透明等效果
- Android(安卓)使用ContentObserver监听短信的变化,并发送信息给特
- Android(安卓)MVVM最简易举例(ViewModel&LiveData)
- Android版本变化而产生的权限变更
- android edittext 输入手机号码格式变化