package com.wangnan.library.painter; import android.graphics.Canvas; import android.graphics.Paint; import com.wangnan.library.model.Point; /** * @ClassName: GestureLockPainter * @Description: 手势解锁绘制者(GestureLockView默认使用) * @Author: wangnan7 * @Date: 2017/9/21 */ public class GestureLockPainter extends Painter { /** * 绘制正常状态的点 * * @param point 单位点 * @param canvas 画布 * @param normalPaint 正常状态画笔 */ @Override public void drawNormalPoint(Point point, Canvas canvas, Paint normalPaint) { // 1.记录画笔的原始属性(绘制过程中需要修改的属性),绘制结束时进行还原 Paint.Style style = normalPaint.getStyle(); float originStrokeWidth = normalPaint.getStrokeWidth(); // 2.绘制空心圆边界 normalPaint.setStyle(Paint.Style.STROKE); normalPaint.setStrokeWidth(point.radius / 32); canvas.drawCircle(point.x, point.y, point.radius, normalPaint); // 3.结束绘制,还原画笔属性 normalPaint.setStyle(style); normalPaint.setStrokeWidth(originStrokeWidth); } /** * 绘制按下状态的点 * * @param point 单位点 * @param canvas 画布 * @param pressPaint 按下状态画笔 */ @Override public void drawPressPoint(Point point, Canvas canvas, Paint pressPaint) { // 1.记录画笔的原始属性(绘制过程中需要修改的属性),绘制结束时进行还原 Paint.Style style = pressPaint.getStyle(); float originStrokeWidth = pressPaint.getStrokeWidth(); // 2.绘制实心点 pressPaint.setStyle(Paint.Style.FILL); canvas.drawCircle(point.x, point.y, point.radius / 3, pressPaint); // 3.绘制空心圆边界 pressPaint.setStyle(Paint.Style.STROKE); pressPaint.setStrokeWidth(point.radius / 16); canvas.drawCircle(point.x, point.y, point.radius, pressPaint); // 4.结束绘制,还原画笔属性 pressPaint.setStyle(style); pressPaint.setStrokeWidth(originStrokeWidth); } /** * 绘制出错状态的点 * * @param point 单位点 * @param canvas 画布 * @param errorPaint 错误状态画笔 */ @Override public void drawErrorPoint(Point point, Canvas canvas, Paint errorPaint) { // 1.记录画笔的原始属性(绘制过程中需要修改的属性),绘制结束时进行还原 Paint.Style style = errorPaint.getStyle(); float originStrokeWidth = errorPaint.getStrokeWidth(); // 2.绘制实心点 errorPaint.setStyle(Paint.Style.FILL); canvas.drawCircle(point.x, point.y, point.radius / 3, errorPaint); // 3.绘制空心圆 errorPaint.setStyle(Paint.Style.STROKE); errorPaint.setStrokeWidth(point.radius / 16); canvas.drawCircle(point.x, point.y, point.radius, errorPaint); // 4.结束绘制,还原画笔属性 errorPaint.setStyle(style); errorPaint.setStrokeWidth(originStrokeWidth); } }