什么?你连个三色渐变圆角按钮都需要什么?你连个三色渐变圆角按钮都需要UI切图?切图?
废话不多说,先上效果图:
该效果其实由三部分组成:
渐变
圆角
文本
渐变渐变
关于渐变,估计大家都不会陌生,以往都是使用gradient进行制作:
shape_gradient.xml
但是,这个只能支持双色渐变,超过双色就无能为力了,所以,我们要考虑使用其它方式:
/**
* Create a shader that draws a linear gradient along a line.
*
* @param x0 The x-coordinate for the start of the gradient line
* @param y0 The y-coordinate for the start of the gradient line
* @param x1 The x-coordinate for the end of the gradient line
* @param y1 The y-coordinate for the end of the gradient line
* @param colors The colors to be distributed along the gradient line
* @param positions May be null. The relative positions [0..1] of
* each corresponding color in the colors array. If this is null,
* the the colors are distributed evenly along the gradient line.
* @param tile The Shader tiling mode
*/
public LinearGradient(float x0, float y0, float x1, float y1, @NonNull @ColorInt int colors[],
@Nullable float positions[], @NonNull TileMode tile)
/**
* x0、y0、x1、y1为决定渐变颜色方向的两个坐标点,x0、y0为起始坐标,x1、y1为终点坐标
* @param colors 所有渐变颜色的数组,即放多少个颜色进去,就有多少种渐变颜色
* @param positions 渐变颜色的比值,默认为均匀分布。
* 把总长度理解为1,假如里面的值为[0.3,0.2,0.5],那么,渐变的颜色就会以 0.3 : 0:2 :0.5 比例进行排版