Android 九宫格解锁Demo--Android 进阶之路

来源:互联网 发布:北京学java最好的学校 编辑:程序博客网 时间:2024/05/17 02:51

好长时间没写博客了,公司两个项目并行开发实在是没啥时间写,终于项目都上线完成趁这个时间可以研究研究自己感兴趣的事情,我对Android 中的View是一直感兴趣的,做出来很炫的东西很有成就感,有木有?当然,在Android中进阶高级工程师对View也必须了解、熟悉、掌握、和精通的。我现在正在往高阶努力着,好了,废话不多说,直接上图看看是不是想要的效果。

首先说一下思路:

1.继承一个View,布局中引用这个View。(这也是必须的哈哈)

2.先绘制出九个大圆(灰色的)和九个小圆(白色的)

3.重写onTouchEvent,监听触摸事件,记录滑动轨迹(只记录第一次落点成功的轨迹),和滑动的索引(也就是密码)

4.根据滑动的轨迹进行绘制线条

5.暴露两个方法和两个回调,当用户绘制完成以后回调,和获取用户绘制的密码


OK!现在直接上代码

构造方法就不上传了,里面就是初始化一下画笔参数,直接上传onSizeChanged方法,这个方法是当View测量完成以后进行回调,里面初始化一些参数

initPattern方法做的事情主要是进行图案位置的保存,每一个图案是一个对象,里面记录它应该摆放的位置,然后用一个集合进行存储这九个图案对象

Pattern对象里面主要就是 大圆的四个位置 和小圆的四个位置 和一个boolean是否选中

然后直接就开始绘制大圆小圆,绘制很简单,只要是canvas.drawRoundRect()// 传入四个位置的值和两个圆角的角度,和一个画笔

这里要注意的是先绘制大圆--->再绘制线--->小圆,这样可以把线的接口给盖住

绘制线需要预先留好,待用户触摸的时候,调用invalidate(); 就绘制出来,先看一下绘制线的代码

绘制的事情搞完,接下来就是监听用户触摸的事件了,主要就是按下,移动,抬起,这里不贴onTouchEvent方法的代码了,

里面主要是调用了upDatePattern(float x, float y)

OK,绘制的流程就搞完了,接下来就是提供两个方法,一个重新绘制,和一个再次绘制

主要就是清空一下数据,如果是再次绘制的会用一个变量记录是第二次绘制

然后就是提供两个回调,一个是第一次绘制成功的回调(密码的集合),一个是第二次成功的回调(是否一致)

大体逻辑就算是完成了,没有那么细致,大家如果有这个需求的话可以自己完善一下,比如把密码存到本地,图案的颜色和样式都可以的!

我会把源码上传的

源码的下载地址:http://download.csdn.net/detail/hyw88866/9607836


2 0
原创粉丝点击