简评: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
旧文推荐:
使用 AsyncListUtil 优化 RecyclerView
RecyclerView 实现快速滚动
现代 Android 开发资源汇总

更多相关文章

  1. 转:关于android中图片裁剪以及PorterDuffXfermode的使用经验小结
  2. ListView 使用技巧
  3. android中actionBar中字体颜色设置
  4. Android中如何实现圆形按钮的颜色变化
  5. 自定义一个自己的Log
  6. Android(安卓)学习之--HttpClient详细使用
  7. 2013.12.04 (7)——— android SlidingMenu之CustomAnimation
  8. android 基础demo例子
  9. Android自定义Dialog去除黑色边框

随机推荐

  1. 生产实习(Android)二
  2. Android == 在Android系统上运行JAVA程序
  3. Android实际开发常用框架总结
  4. 手把手--Android Studio V3.5.2开发环境
  5. android学习博客
  6. android如何去掉标题栏
  7. android注意事项。随时补充
  8. Android(安卓)TCP socket通信
  9. 安卓广播监听USB插拔
  10. GridView属性集合 drawSelectorOnTop