[译] Android 实现颜色渐变的一个小 tip

简评:TL;DR: 若是要实现某个颜色到透明的渐变时,记得不要改动颜色的 RGB 值。android

Tip: 若是你想要建立从某个颜色到透明的渐变(gradient)背景,那就要当心使用 @android:color/transparent 了。ide

由于当 Android 在绘制渐变(gradient)时,须要指定两种颜色表明渐变部分的两边(startColor - centerColor, centerColor - endColor, startColor - endColor)。spa

Android 将会计算颜色的四个组成部分(A, R, G, B)的差值。好比,咱们想实现下面两个颜色的渐变:3d


在渐变过程的特定阶段的颜色值,能够表示为:

当使用 @android:color/transparent 时,要记住虽然其看起来确实是透明的(即 A = #00),但也有本身的 RGB 值。若是你看过 android.graphics 中的 Color 类,你会发现 Color.TRANSPARENT 等于 0(#00000000)也就是一个彻底透明的黑色。cdn

下面来看一个例子,咱们定义以下的一个 gradient:
blog

其显示效果是这样的:
ip

是否是感受怪怪的。由于咱们实际上是将一个 #FF27AE60 的绿色渐变到了一个彻底透明的黑色。
开发

所以「当咱们要实现某个颜色到透明的渐变时,不要改动颜色的 RGB 值」。
所以,上面的例子应该改为这样(只变更 Alpha 值):
get


显示效果:
显示效果
显示效果

渐变过程
渐变过程


知乎专栏:极光日报it

原文连接:Android Dev Tip #3

极光日报,极光开发者 的 Side Project,天天导读三篇国外技术类文章,欢迎投稿和关注。

相关文章
相关标签/搜索