线性渲染LinearGradient
LinearGradient有两个构造函数
第一个:
public LinearGradient(float x0, float y0, float x1, float y1,int color0, int color1, TileMode tile)
前四个参数是区域,从开始点,到结束点
color0就是起始颜色,color1就是终止颜色;颜色值必须使用0xAARRGGBB形式的16进制表示!表示透明度的AA一定不能少。
TileMode tile:与BitmapShader一样,用于指定控件区域大于指定的渐变区域时,空白区域的颜色填充方法。
第二个构造函数:
LinearGradient(float x0, float y0, float x1, float y1,int colors[], float positions[], TileMode tile)
同样,(x0,y0)就是起始渐变点坐标,参数中(x1,y1)就是结束渐变点坐标
colors[]用于指定渐变的颜色值数组,同样,颜色值必须使用0xAARRGGBB形式的16进制表示!表示透明度的AA一定不能少。
positions[]与渐变的颜色相对应,取值是0-1的float类型,表示在每一个颜色在整条渐变线中的百分比位置
例如:自定义一个view使用onDraw方法画一个矩形
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint.setShader(new LinearGradient(0,getHeight()/2,getWidth(),getHeight()/2,0xffff0000,0xff00ff00, Shader.TileMode.CLAMP));
canvas.drawRect(0,0,getWidth(),getHeight(),mPaint);
}
这里使用的第一中构造,显示两种颜色的渐变,如果多重就吧颜色变成颜色数组。
这里渐变区域为高的一半,如果渐变区域小于view的尺寸,多余空白怎么填充呢??这里就要介绍构造方法中的最后一个参数的作用了
有三种情况:
第一种:TileMode.CLAMP
空白区挨着的最后一种颜色去填充
第二种:TileMode.REPEAT 重复填充以前的渐变色
第三种:TilmMode.MIRROR
镜像填充
第二种构造方法中的的倒数第二个参数position[]:
这个是控制每种颜色的渐变比例的,和颜色一一对应,不能多也不能少,不然直接报错。
这个类的应用场景:
先画一个渐变图像,如果这个渐变图形位移起来是什么样子呢?
字体颜色的渐变效果,就是一个线性渲染+移动形成的效果。详细查看下面的连接
http://blog.youkuaiyun.com/z_x_qiang/article/details/77895083