介绍
这两天写了一个九宫格锁屏的控件,实现了九宫格锁屏的设置和解锁。该控件没有使用任何图片资源,显示的内容(包括点、圆、线等)全部由画笔绘制,所以可以自由复用。
使用效果图:
实现
先上代码吧。
自定义九宫格控件:LocusPassView
|
|
代码里的注释应该是比较清晰的。主要思路就是, 依次将9个点映射为0到8的整型。在手指滑动的过程中,用一个Integer类型的List保存滑过的点,并且通过PostInvalidate方法不断调用onDraw()进行重绘。包括9个点的绘制、滑过点周围圆圈的绘制以及点之间(包括手指现在的触点)连线的绘制。
同时编写了一个内部接口OnCompleteListener。自定义View中有该接口的对象, 由setOnCompleteListener()方法传入。在连接了3个或3个以上圆点的时候,手指抬起,调用其中的回调方法onComplete(String )。其中传入的String即为各选中点映射的整型组成的字符串。外部可对该字符串进行处理,或设置,或比对。
使用及Demo
使用方法很简单,直接在布局文件里添加就好了。
布局文件:activity_locus.xml
|
|
设置密码的Activity: LocusSetActivity.java
|
|
进行解锁的Activity: LocusUnlockActivity.java
|
|