SweepGradient梯度渐变也叫扫描渐变。
SweepGradient(float cx, float cy, int color0, int color1)
cx,cy是绘制渐变的原点坐标
color0开始颜色
color1结束颜色
以(cx,cy)为圆心,以圆心为坐标原点,从X轴正方向开始顺时针绘制。
public class SweepGradientView extends View {
private Paint mPaint;
private Rect rect;
private SweepGradient sweepGradient;
private int screenWidth,screenHeight;
public SweepGradientView(Context context) {
this(context,null);
}
public SweepGradientView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
screenWidth=ScreenUitl.getScreenWidth(context);
screenHeight=ScreenUitl.getScreenHeight(context);
mPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
sweepGradient=new SweepGradient(200,200,Color.RED,Color.YELLOW);
mPaint.setShader(sweepGradient);
rect=new Rect(0,0,screenWidth,screenHeight);
}
@Override
protected void onDraw(Canvas canvas) {
// super.onDraw(canvas);
canvas.drawRect(rect,mPaint);
}
修改rect的范围
有此可以看出,显示的内容还是有绘制的rect的范围决定的。
另一个构造方法
SweepGradient(float cx, float cy, int[] colors, float[] positions)
cx ,cy为圆心坐标
colors参与渐变的颜色值,数量可以大于2
positions 确定各颜色渐变的区域如new float[] { 0, 0.1F, 0.5F, 0.7F, 0.8F },则RED 到 YELLOW 从0%到10% YELLOW到GREEN 10%到50% GREEN到CYAN 50%到70% CYAN到BLUE 80%到100%。如果 positions 为空则各种颜色的渐变将会均分整个渐变区域
screenWidth=ScreenUitl.getScreenWidth(context);
screenHeight=ScreenUitl.getScreenHeight(context);
mPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
sweepGradient=new SweepGradient(200,200,new int[]{Color.RED, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE },
new float[]{0, 0.1F, 0.5F, 0.7F, 0.8F});
mPaint.setShader(sweepGradient);
rect=new Rect(0,0,screenWidth,screenHeight);