建议

使用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

更多相关文章

  1. Android设置透明、半透明等效果
  2. Android设置透明、半透明等效果
  3. Android(安卓)UI设计:ImageView
  4. android Button 颜色的变化(点击,放开,点击不放)
  5. Android设置透明、半透明等效果
  6. Android(安卓)使用ContentObserver监听短信的变化,并发送信息给特
  7. Android(安卓)MVVM最简易举例(ViewModel&LiveData)
  8. Android版本变化而产生的权限变更
  9. android edittext 输入手机号码格式变化

随机推荐

  1. ProGuard用法
  2. 转化屏幕•ViewFlipper 的使用
  3. android content命令
  4. 生成android的bks证书
  5. 启动Android模拟器报错需安装Intel HAXM
  6. 仿微信摇一摇功能,android 重力感应开发
  7. android wav 去头信息转化成pcm 格式数据
  8. android 优化文章
  9. [Android(安卓)界面] Android: 自定义DIA
  10. Android(安卓)SDK无法更新问题解决