每个Android开发人员都知道,现在Android的解锁最常用的就是九宫格解锁,ios的解锁常用的是数字密码解锁。而我们在开发工程中,很多时候,都需要Android和ios进行结合。有的时候我们就需要把我们的解锁界面弄成像ios一样的数字键盘。
这里我就实现了一个仿照ios的数字密码解锁界面。在这里我采用了两种方式来实现,第一种就是使用自定义控件的形式,第二种就是使用我们的布局来实现的。这里我就着重讲一下使用自定义控件形式实现的思路。至于使用布局文件实现的方式,我就不进行具体的讲解了,具体的在后面我会上传源码供大家下载进行研究学习。
当然,我的能力有限,可能你们觉得我的方式不好,那么你们就给我提出来,看看具体你们觉得怎么实现才好,我们一起研究学习。
好了,废话不多说了,现在就来讲解一下,我所使用自定义控件的实现方法:
<强> 1。绘制数字强>
//绘制第一排1、2、3 画布。drawText (“1”first_x 40 + first_y,油漆); 画布。drawText (“2”first_x * 2 40 + first_y,油漆); 画布。drawText (“3”, first_x * 3, 40 + first_y,油漆);//绘制第2排4、5、6 画布。drawText (“4”first_x 40 + first_y + first_x,油漆); 画布。drawText (“5”first_x * 2 40 + first_y + first_x,油漆); 画布。drawText (“6”, first_x * 3、40 + first_y + first_x,油漆);//绘制第3排7,8,9 画布。drawText (“7”first_x 40 + first_y + first_x * 2,油漆); 画布。drawText (“8”, first_x * 2, 40 + first_y + first_x * 2,油漆); 画布。drawText (“9”, first_x * 3, 40 + first_y + first_x * 2,油漆);//绘制第4排0 画布。drawText (“0”, first_x * 2, 40 + first_y + first_x * 3,油漆); >之前<强> 2。绘制好数字后,我们需要在每一个数字外面添加一层圆,绘制圆强>
//依次绘制第一排的圆 画布。drawCircle (40 + first_y - 15 first_x + 10日,50岁,油漆); 画布。drawCircle (40 + first_y first_x * 2 + 10——15日,50岁,油漆); 画布。drawCircle (first_x * 3 + 10, 40 + first_y - 15, 50岁,油漆);//依次绘制第2排的圆 画布。drawCircle (40 + first_y + first_x first_x + 10——15日,50岁,油漆); 画布。drawCircle (first_x * 2 + 10, 40 + first_y + first_x - 15, 50岁,油漆); 画布。drawCircle (first_x * 3 + 10, 40 + first_y + first_x - 15, 50岁,油漆);//依次绘制第3排的圆 画布。drawCircle (40 + first_y + first_x first_x + 10 * 2 - 15日,50岁,油漆); 画布。drawCircle (first_x * 2 + 10, 40 + first_y + first_x * 2 - 15日,50岁,油漆); 画布。drawCircle (first_x * 3 + 10, 40 + first_y + first_x * 2 - 15日,50岁,油漆);//绘制最后一个圆 画布。drawCircle (first_x * 2 + 10, 40 + first_y + first_x * 3 - 15, 50岁,油漆); >之前<强> 3。点击数字后,我们给一个不同的效果,让用户知道自己点击了该数字,这里我是吧外面的圆的颜色改为了黄色强>
//判断是否点击数字 如果(circle_x比;0,,circle_y祝辞0){//点击 如果(type==0){//按下刷新 paint.setColor (Color.YELLOW);//设置画笔颜色 画布。drawCircle (circle_x circle_y 50、油漆);//绘制圆 }else if (type==1){//弹起刷新 paint.setColor (Color.WHITE);//设置画笔颜色 画布。drawCircle (circle_x circle_y 50、油漆);//绘制圆//绘制完成后,重置 circle_x=0;circle_y=0; } }<>强4。最后就是判断点击的数字强>
/* *判断点击的是哪一个数字圆 */私人空间handleDown(浮动x, y浮动){//判断点击的是那一列的数据 if (x [0] - 50 & lt;=x,,& lt; x=x[0] + 50){//第一列//获取点击处的圆心横坐标 circle_x=x [0];//判断点击的是哪一排 如果(y [0] - 50 & lt;=y,,y[0] + 50祝辞=y){//第1排//获取点击的数字圆的圆心纵坐标 circle_y=y [0]; 数量=1;//设置点击的数字 }else if (y [1] - 50 & lt;=y,,y[1] + 50祝辞=y){//第2排//获取点击的数字圆的圆心纵坐标 circle_y=y [1]; 数量=4;//设置点击的数字 }else if (y [2] - 50 & lt;=y,,y[2] + 50祝辞=y){//第3排//获取点击的数字圆的圆心纵坐标 circle_y=y [2]; 数量=7;//设置点击的数字 } }else if (x [1] - 50 & lt;=x,,x & lt;=x[1] + 50){//第2列//获取点击处的圆心横坐标 circle_x=x [1];//判断点击的是哪一排 如果(y [0] - 50 & lt;=y,,y[0] + 50祝辞=y){//第1排//获取点击的数字圆的圆心纵坐标 circle_y=y [0]; 数=2;//设置点击的数字 }else if (y [1] - 50 & lt;=y,,y[1] + 50祝辞=y){//第2排//获取点击的数字圆的圆心纵坐标 circle_y=y [1]; 数量=5;//设置点击的数字 }else if (y [2] - 50 & lt;=y,,y[2] + 50祝辞=y){//第3排//获取点击的数字圆的圆心纵坐标 circle_y=y [2]; 数量=8;//设置点击的数字 }else if (y [3] - 50 & lt;=y,,y[3] + 50祝辞=y){//第4排//获取点击的数字圆的圆心纵坐标 circle_y=y [3]; 数量=0;//设置点击的数字 } }else if (x [2] - 50 & lt;=x,,& lt; x=x[2] + 50){//第3列//获取点击处的圆心横坐标 circle_x=x [2];//判断点击的是哪一排 如果(y [0] - 50 & lt;=y,,y[0] + 50祝辞=y){//第1排//获取点击的数字圆的圆心纵坐标 circle_y=y [0]; 数量=3;//设置点击的数字 }else if (y [1] - 50 & lt;=y,,y[1] + 50祝辞=y){//第2排//获取点击的数字圆的圆心纵坐标 circle_y=y [1]; 数量=6;//设置点击的数字 }else if (y [2] - 50 & lt;=y,,y[2] + 50祝辞=y){//第3排//获取点击的数字圆的圆心纵坐标 circle_y=y [2]; 数量=9;//设置点击的数字 } } sendAccessEvent (R.string.numeric_keyboard_down); 类型=0;//按下刷新//绘制点击时的背景圆 无效(); }android仿ios数字密码解锁界面的实例