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

Tip: 如果你想要创建从某个颜色到透明的渐变(gradient)背景,那就要小心使用 @android:color/transparent 了。

因为当 Android 在绘制渐变(gradient)时,需要指定两种颜色代表渐变部分的两边(startColor - centerColor, centerColor - endColor, startColor - endColor)。

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

clipboard.png

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

clipboard.png

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

clipboard.png

下面来看一个例子,我们定义如下的一个 gradient:

clipboard.png

其显示效果是这样的:

clipboard.png

是不是感觉怪怪的。因为我们其实是将一个 #FF27AE60 的绿色渐变到了一个完全透明的黑色。

clipboard.png

因此「当我们要实现某个颜色到透明的渐变时,不要改动颜色的 RGB 值」。
因此,上面的例子应该改成这样(只变动 Alpha 值):

clipboard.png

显示效果:

clipboard.png

               显示效果

clipboard.png

              渐变过程

英文原文:Android Dev Tip #3

更多相关文章

  1. [Android菜鸟笔记]xml实现编辑框/按钮的椭圆样(shape标签)+应用
  2. Android LCD背景颜色和边框颜色的可控制
  3. Android 中动态提取图片中颜色作为主题色
  4. ListView有背景图片或背景颜色,那么在滑动ListView的时候,ListView
  5. android List拖动时背景为黑色问题
  6. 如何导入android 自带的例子
  7. android项目colors.xml中几个常用的颜色资源

随机推荐

  1. android 笔记handler
  2. Android搜索视媒体库视频 列表显示选择
  3. android主线程中Looper.loop()为什么不会
  4. Android(安卓)Device Monitor 报 open fa
  5. Android ant 打包 ant -f build.xml rele
  6. android中SimpleCursorAdapter _id错误的
  7. android gif view
  8. Android中利用画图类和线程画出闪烁的心
  9. Android打造万能适配器--RecyclerView
  10. windows下android 开发环境建立