-
Notifications
You must be signed in to change notification settings - Fork 29
Method
sinawangnan7 edited this page Sep 25, 2017
·
20 revisions
相关属性修改的方法略过,具体请参看 Github Wiki Attr
方法名 | 作用 |
---|---|
getRadius() | 获取半径值 |
补充:GestureLockView执行完onSizeChanged(w, h, oldw, oldh)方法后mRadius才有值。
方法名 | 作用 |
---|---|
showErrorStatus() | 显示错误状态 |
补充:设置后会一直显示错误状态。
方法名 | 作用 |
---|---|
showErrorStatus(long millisecond) | 显示错误状态多少毫秒 |
补充:显示错误状态millisecond毫秒后还原至初始状态
方法名 | 作用 |
---|---|
clearView() | 清理视图至初始状态 |
方法名 | 作用 |
---|---|
setGestureLockListener(OnGestureLockListener listener) | 设置手势监听器 |
方法名 | 作用 |
---|---|
setPainter(Painter painter) | 设置绘制者 |
补充:自定义绘制时使用该方法
1.手势监听器设置方法: setGestureLockListener(OnGestureLockListener listener)
// 从XML视图中获取GestureLockView
mGestureLockView = (GestureLockView) findViewById(R.id.glv);
// 设置手势解锁监听器
mGestureLockView.setGestureLockListener(new OnGestureLockListener() {
/**
* 监听视图解锁开始(手指按下)
*/
@Override
public void onStarted() {
}
/**
* 图案解锁内容改变
*
* @param progress 解锁进度(数字字符串)
*/
@Override
public void onProgress(String progress) {
}
/**
* 图案解锁完成
*
* @param result 解锁结果(数字字符串)
*/
@Override
public void onComplete(String result) {
}
});
2.自定义绘制方法: setPainter(Painter painter)
// 从XML视图中获取GestureLockView
mGestureLockView = (GestureLockView) findViewById(R.id.glv);
// 设置自定义绘制者
mGestureLockView.setPainter(new Painter() {
/**
* 绘制正常状态的点
*
* @param point 点对象 中心坐标(point.x,point.y)半径 point.radius
* @param canvas 画布
* @param normalPaint 正常状态的画笔
*/
@Override
public void drawNormalPoint(Point point, Canvas canvas, Paint normalPaint) {
}
/**
* 绘制按下状态的点 (参数解释类比上方)
*/
@Override
public void drawPressPoint(Point point, Canvas canvas, Paint pressPaint) {
}
/**
* 绘制错误状态的点 (参数解释类比上方)
*/
@Override
public void drawErrorPoint(Point point, Canvas canvas, Paint errorPaint) {
}
});
自定义Painter代码参考:
- 仿360系统桌面绘制者(3行绘制代码): System360Painter
- 仿京东金融绘制者(9行绘制代码): JDFinancePainter
- 手势解锁绘制者(25行绘制代码): GestureLockPainter
补充:绘制连线的方法默认已实现,无需开发者再次实现,但是如果绘制连线的效果开发者不满意或者需要拓展(像支付宝的箭头效果),开发者可自定义绘线方法(重写drawLines方法),代码如下:
// 设置自定义绘制者
mGestureLockView.setPainter(new Painter() {
// 绘制点的方法(略) ......
/**
* 绘制连线
*
* @param points 点集合(已被按下的点)
* @param eventX 事件X坐标(当前触摸位置)
* @param eventY 事件Y坐标(当前触摸位置)
* @param lineSize 线的粗细值
* @param canvas 画布
*/
@Override
public void drawLines(List<Point> points, float eventX, float eventY, int lineSize, Canvas canvas) {
super.drawLines(points, eventX, eventY, lineSize, canvas);
}
});
绘制连线的方法没有提供画笔(Paint),需要开发者区分点状态从父类Painter获取不同的画笔,代码如下:
// 设置自定义绘制者
mGestureLockView.setPainter(new Painter() {
// 绘制点的方法(略) ......
/**
* 绘制连线
*
* @param points 点集合(已被按下的点)
* @param eventX 事件X坐标(当前触摸位置)
* @param eventY 事件Y坐标(当前触摸位置)
* @param lineSize 线的粗细值
* @param canvas 画布
*/
@Override
public void drawLines(List<Point> points, float eventX, float eventY, int lineSize, Canvas canvas) {
super.drawLines(points, eventX, eventY, lineSize, canvas);
// 区分状态获取不同的画笔
Paint paint = null;
if(points.get(0).status == Point.POINT_PRESS_STATUS){ // 按下状态
paint = mPressPaint;
} else if (points.get(0).status == Point.POINT_ERROR_STATUS){ // 出错状态
paint = mErrorPaint;
}
// TODO 开始自己的绘制逻辑
}
});
自定义Painter(包含自定义连线)代码参考:
- 仿支付宝绘制者: AliPayPainter