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

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

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

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

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

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

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

其显示效果是这样的:

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

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

显示效果:

               显示效果

              渐变过程

英文原文:Android Dev Tip #3

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. python list.sort()根据多个关键字排序的方法实现
  3. android EditText设置不可写
  4. Android(安卓)拨号器的简单实现
  5. android实现字体闪烁动画的方法
  6. Android中不同应用间实现SharedPreferences数据共享
  7. [Android(安卓)NDK]Android(安卓)JNI开发例子 ---3 在JNI中实现o
  8. Android设置通知栏/状态栏透明改变通知栏颜色和app最上部分颜色
  9. android 拨打紧急号码,通话时开启免提功能实现

随机推荐

  1. SDL2库(4)-Android(安卓)端源码简要分析(A
  2. Android(安卓)studio 软件安装过程中遇到
  3. Android中Handler的作用
  4. android7.1 外置SD卡三方应用没有读写权
  5. android 卡通片资源Tween动画
  6. Android系统概述
  7. Android(安卓)之 WallpaperManager用法
  8. android textview改变部分文字的颜色和st
  9. [置顶] Android Scroll详解(三):Android
  10. android差分更新之服务端