LinearGradient的使用

LinearGradient作为Shade的子类,被经常用作于绘制颜色线性渐变的效果。而且它的用法也很简单,主要是作为paint.setShader()中的参数。所有大致介绍一下构造函数的用法就可以清楚LinearGradient的使用了。构造方法如下:


这里写图片描述

  • x0,表示颜色的起始点的x值
  • y0,表示颜色起始点的y值
  • x1,表示颜色的终点的X值
  • y1,表示颜色终点的y值
  • colors,表示颜色数组,在数组中存放需要进行渐变的颜色
  • posiitions,颜色的偏移量,表示颜色的位置。如果为null,表示为现行渐变,等同于new float[]{0f, 0.5f, 1f}
  • tile,TileMode平铺方式,上篇已经介绍,不再赘述

    有一点需要注意,LinearGradient绘制的是一条线段,起点和终点,颜色也是这条线段上的渐变,如果想扩散到这条线外部的其他部分,是通过TileMode来实现的。

  • 比如我们想要实现一个竖直方向上的渐变,如下
    这里写图片描述

  mLinearGradient = new LinearGradient(0, 0, 0, getMeasuredHeight(),
                new int[]{Color.RED, Color.WHITE, Color.BLUE}, new float[]{0f, 0.5f, 1f}, Shader.TileMode.CLAMP);
  • 如果要实现水平方向上的渐变,如下
    这里写图片描述
 mLinearGradient = new LinearGradient(0, 0, getMeasuredWidth(), 0,
                new int[]{Color.RED, Color.WHITE, Color.BLUE}, new float[]{0f, 0.5f, 1f}, Shader.TileMode.CLAMP);
  • 还有对角线渐变
    这里写图片描述
mLinearGradient = new LinearGradient(0, 0, getMeasuredWidth(), getMeasuredHeight(),
                new int[]{Color.RED, Color.WHITE, Color.BLUE}, new float[]{0f, 0.5f, 1f}, Shader.TileMode.CLAMP);
原文地址:https://www.cnblogs.com/summerpxy/p/13648317.html