安卓可以通过LinearGradient绘制线性多彩渐变效果,
1.创建Paint,在绘制文本和图形用它来设置图形颜色, 样式等绘制信息,其中依据机器性能与需要酌情添加setAntiAlias(true)(抗锯齿,绘制图形速度会变慢),setDither(true)(图像抖动处理,会使绘制出来的图片颜色更加平滑),也可通过new Paint(Paint.ANTI_ALIAS_FLAG),paint.setFlags(Paint.ANTI_ALIAS_FLAG)实现,效果相同。
2.使用LinearGradient进行线性渐变绘制,其中
x0:绘制的起点x轴坐标;
y0:绘制的起点y轴坐标;
x1:渐变结束点x轴坐标;
y1:渐变结束点y轴坐标
colors:此项直接分写成两端的两种色彩数值,也可写成int[]型color组实现分布组内颜色的效果;
positions:位置数组,position的取值范围[0,1],作用是指定某个位置的颜色值,如果传null,渐变就线性变化;
tile:用于绘制区域小于指定的控件全部时,空白区域的颜色填充方法。
CLAMP边缘拉伸,为被shader覆盖区域,使用shader边界颜色进行填充
REPEAT 在水平和垂直两个方向上重复,相邻图像没有间隙
MIRROR以镜像的方式在水平和垂直两个方向上重复,相邻图像有间隙
注意:
(1)如果使用的起始color没有设置透明度时,会默认有0x00XXXXXX效果,在绘制对象为不断变化的进度条时起始颜色会随进度变长逐渐透明化;
(2)x0,y0与x1,y1决定了渐变方向,例如0,0到max_x,max_y即是左上角到右下渐变
(3)float[] position 中的第几项决定了int [] colors 中的相同位置item在渐变中所占的比例
(4)所用color值应该是 array.getColor所设置的16进制色值(示例:0x000000)
示例:
Paint thumbPaint =new Paint(Paint.ANTI_ALIAS_FLAG);
LinearGradient shader =new LinearGradient(0, 0, progress, mProgressHeight,
new int[]{mProgressColor, mMiddleColor, mThumbColor}, null, Shader.TileMode.CLAMP);
thumbPaint.setShader(shader);