android自定义手势解锁

简介

一个手势解锁的view(仿照支付宝手势解锁的样式),可以改变手势解锁的颜色、样式(目前只有两种样式)、大小等等。

1、需要在整个项目的build.gradle中添加如下依赖项(jcenter暂时没有传上去)

1
2
3
4
5
6
7
allprojects {
repositories {
maven {
url "http://dl.bintray.com/loner/maven"
}
}
}

2、在自己app的build.gradle中添加如下依赖项

1
compile 'loner.library.gesture:gesture:1.0.1'

使用方法

1、首先在layout文件中显示view

1
2
3
4
5
6
<loner.widget.lockpattern.view.LockPatternSmallView
android:id="@+id/mLocusPassWordViewFirstRegisterSmall"
android:layout_gravity="center"
android:layout_width="50dp"
android:layout_height="50dp" >
</loner.widget.lockpattern.view.LockPatternSmallView>
1
2
3
4
5
6
<loner.widget.lockpattern.view.LockPatternView
android:id="@+id/mLocusPassWordViewFirstRegister"
android:layout_gravity="center"
android:layout_width="350dp"
android:layout_height="350dp" >
</loner.widget.lockpattern.view.LockPatternView>

LockPatternSmallView是小数字键盘,LockPatternView是大数字键盘。
这里有几个属性简单介绍一下(使用方法就是在view下面添加app:pressColor=” “):

  • pressColor表示按下是按钮的颜色。
  • initColor表示初始时按钮的颜色。
  • errorColor表示按下是按钮的颜色。
  • style表示手势解锁样式,目前只有0和1两种样式,大家可以试试
  • radius表示手势解锁键盘的圆圈半径

2、在java文件中声明两个view变量,一个是大键盘,一个是小键盘,如下:

1
2
3
4
private LockPatternView lpv;
private LockPatternSmallView lpvs;
lpv=(LockPatternView)findViewById(R.id.mLocusPassWordViewFirstRegister);
lpvs=(LockPatternSmallView)findViewById(R.id.mLocusPassWordViewFirstRegisterSmall);

3、更多使用方法

(1)通过一个回调方法来获取键盘数字密码,写法如下:

1
2
3
4
5
6
lpv.setOnCompleteListener(new LockPatternView.OnCompleteListener() {
@Override
public void onComplete(String mPassword) {
...
}
}

onComplete函数就是当键盘输入结束后触发的函数。
onComplete函数中的参数mPassword就是键盘输入结束后的密码,然后在onComplete函数中进行操作。
九宫格标记如下

1 2 3
4 5 6
7 8 9

密码记录的是每个格子的标记,中间用”,”隔开。
mPassword=””的时候,及手势密码位数小于5。

1
2
3
4
if (mPassword.equals("")) {//手势密码位数不正确
txtTitle.setText("手势密码不合规范");
txtTitle.setTextColor(Color.RED);
}

(2)设置键盘不可touch

1
lpv.disableTouch();

(3)清空键盘

1
lpv.clearPassword();

(4)设置错误

1
lpv.error();

(5)保存密码

1
lpv.setPassWord();

(6)设置小键盘显示

1
lpvs.setOndraw(FirstPassword);

FirstPassword就是String类型,String格式就是mPassword格式。

(7)密码保存存放到sharedpreference,获取密码如下:

1
2
SharedPreferences settings = this.getSharedPreferences("Gesture_Lock",MODE_PRIVATE);
txtPassword.setText(settings.getString("password", ""));

(8)设置密码长度

1
lpv.setPasswordMinLength(3);

demo以及源码下载