如下所示:

每个Android开发人员都知道,现在android的解锁最常用的就是九宫格解锁,ios的解锁常用的是数字密码解锁。而我们在开发工程中,很多时候,都需要android和ios进行结合。有的时候我们就需要把我们的解锁界面弄成像ios一样的数字键盘。

这里我就实现了一个仿照ios的数字密码解锁界面。在这里我采用了两种方式来实现,第一种就是使用自定义控件的形式,第二种就是使用我们的布局来实现的。这里我就着重讲一下使用自定义控件形式实现的思路。至于使用布局文件实现的方式,我就不进行具体的讲解了,具体的在后面我会上传源码供大家下载进行研究学习。

当然,我的能力有限,可能你们觉得我的方式不好,那么你们就给我提出来,看看具体你们觉得怎么实现才好,我们一起研究学习。

好了,废话不多说了,现在就来讲解一下,我所使用自定义控件的实现方法:

1.最主要还是实现自定义数字键盘(一个自定义View的控件):

1.绘制数字

// 绘制第一排1,2,3

canvas.drawText("1", first_x, 40 + first_y, paint);

canvas.drawText("2", first_x * 2, 40 + first_y, paint);

canvas.drawText("3", first_x * 3, 40 + first_y, paint);

// 绘制第2排4,5,6

canvas.drawText("4", first_x, 40 + first_y + first_x, paint);

canvas.drawText("5", first_x * 2, 40 + first_y + first_x, paint);

canvas.drawText("6", first_x * 3, 40 + first_y + first_x, paint);

// 绘制第3排7,8,9

canvas.drawText("7", first_x, 40 + first_y + first_x * 2, paint);

canvas.drawText("8", first_x * 2, 40 + first_y + first_x * 2, paint);

canvas.drawText("9", first_x * 3, 40 + first_y + first_x * 2, paint);

// 绘制第4排0

canvas.drawText("0", first_x * 2, 40 + first_y + first_x * 3, paint);

2.绘制好数字后,我们需要在每一个数字外面添加一层圆,绘制圆

//依次绘制第一排的圆

canvas.drawCircle(first_x+10, 40 + first_y - 15, 50, paint);

canvas.drawCircle(first_x*2+10, 40 + first_y - 15, 50, paint);

canvas.drawCircle(first_x*3+10, 40 + first_y - 15, 50, paint);

//依次绘制第2排的圆

canvas.drawCircle(first_x+10, 40 + first_y + first_x - 15, 50, paint);

canvas.drawCircle(first_x*2+10, 40 + first_y + first_x - 15, 50, paint);

canvas.drawCircle(first_x*3+10, 40 + first_y + first_x - 15, 50, paint);

//依次绘制第3排的圆

canvas.drawCircle(first_x+10, 40 + first_y + first_x * 2 - 15, 50, paint);

canvas.drawCircle(first_x*2+10, 40 + first_y + first_x * 2 - 15, 50, paint);

canvas.drawCircle(first_x*3+10, 40 + first_y + first_x * 2 - 15, 50, paint);

//绘制最后一个圆

canvas.drawCircle(first_x*2+10, 40 + first_y + first_x * 3 - 15, 50, paint);

3.点击数字后,我们给一个不同的效果,让用户知道自己点击了该数字,这里我是吧外面的圆的颜色改为了黄色

//判断是否点击数字

if(circle_x > 0 && circle_y > 0){//点击

if(type == 0){//按下刷新

paint.setColor(Color.YELLOW);//设置画笔颜色

canvas.drawCircle(circle_x, circle_y, 50, paint);//绘制圆

}else if(type == 1){//弹起刷新

paint.setColor(Color.WHITE);//设置画笔颜色

canvas.drawCircle(circle_x, circle_y, 50, paint);//绘制圆

//绘制完成后,重置

circle_x = 0; circle_y = 0;

}

}

4.最后就是判断点击的数字

/*

* 判断点击的是哪一个数字圆

*/

private void handleDown(float x, float y){

//判断点击的是那一列的数据

if(xs[0] - 50 <= x && x <= xs[0] + 50){//第一列

//获取点击处的圆心横坐标

circle_x = xs[0];

//判断点击的是哪一排

if(ys[0] - 50 <= y && ys[0] + 50 >= y){//第1排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[0];

number = 1;//设置点击的数字

}else if(ys[1] - 50 <= y && ys[1] + 50 >= y){//第2排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[1];

number = 4;//设置点击的数字

}else if(ys[2] - 50 <= y && ys[2] + 50 >= y){//第3排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[2];

number = 7;//设置点击的数字

}

}else if(xs[1] - 50 <= x && x <= xs[1] + 50){//第2列

//获取点击处的圆心横坐标

circle_x = xs[1];

//判断点击的是哪一排

if(ys[0] - 50 <= y && ys[0] + 50 >= y){//第1排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[0];

number = 2;//设置点击的数字

}else if(ys[1] - 50 <= y && ys[1] + 50 >= y){//第2排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[1];

number = 5;//设置点击的数字

}else if(ys[2] - 50 <= y && ys[2] + 50 >= y){//第3排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[2];

number = 8;//设置点击的数字

}else if(ys[3] - 50 <= y && ys[3] + 50 >= y){//第4排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[3];

number = 0;//设置点击的数字

}

}else if(xs[2] - 50 <= x && x <= xs[2] + 50){//第3列

//获取点击处的圆心横坐标

circle_x = xs[2];

//判断点击的是哪一排

if(ys[0] - 50 <= y && ys[0] + 50 >= y){//第1排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[0];

number = 3;//设置点击的数字

}else if(ys[1] - 50 <= y && ys[1] + 50 >= y){//第2排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[1];

number = 6;//设置点击的数字

}else if(ys[2] - 50 <= y && ys[2] + 50 >= y){//第3排

//获取点击的数字圆的圆心纵坐标

circle_y = ys[2];

number = 9;//设置点击的数字

}

}

sendAccessEvent(R.string.numeric_keyboard_down);

type = 0;//按下刷新

//绘制点击时的背景圆

invalidate();

}

好了,大概我的就是这样了。顺带提一下,我这里上面4个显示密码的控件也是采用的自定义控件的方式,使用线程实现输入数字后1秒后用密码字符替换输入的数字。(有人可能会说系统的EditText控件设置样式为密码也可以实现,这里我想说的是,不可以的,至少我试了是不行的)

以上这篇android 仿ios数字密码解锁界面的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

android 密码解锁程序,android 仿ios数字密码解锁界面的实例相关推荐

  1. Android设置透明状态栏,仿ios状态栏

    为什么80%的码农都做不了架构师?>>>    Android设置透明状态栏,仿ios状态栏 设置透明状态栏后,效果如下: 我的实现思路是: 在根布局上添加一块布局 添加了一块线性布 ...

  2. android home跳转,Android 中按home键和跳转到主界面的实例代码

    Android 中按home键和跳转到主界面的实例代码 //home Intent intent= new Intent(Intent.ACTION_MAIN); intent.setFlags(In ...

  3. android金币动效_Android 仿余额宝数字跳动动画效果完整代码

    一:想都不用想的,有图有真相,看着爽了,在看下面源码 二:实例源码分析 ①:首先定义接口 package com.demo.tools.view; /** * 数字动画自定义 * * @author ...

  4. Android 文件夹放大缩小仿IOS融合动画效果

    效果如下,打开文件夹时从小到大与最终位置大小吻合,关闭文件夹时缩小到图标原有位置做到无缝融合效果. 过程分析 (一)文件展开后的布局 如上图文件夹打开后布局层次 1.最下面时背景层(背景不移动但有透明 ...

  5. android 基础应用程序,android应用程序基本实现(基础篇).ppt

    <android应用程序基本实现(基础篇).ppt>由会员分享,可在线阅读,更多相关<android应用程序基本实现(基础篇).ppt(22页珍藏版)>请在人人文库网上搜索. ...

  6. android系统应用程序,Android系统应用程序基本概念解读

    经常关注我们51CTO的朋友们应该知道,在以前的文章中我们对Android这一手机系统有一个详细的跟踪介绍,方便大家学习应用这一新的功能强大的开源手机系统,比如对Android源码的编译的解析的解析等 ...

  7. android小闹钟程序,Android实现闹钟小程序.pdf

    Android实实现现闹闹钟钟小小程程序序 这篇文章主要为大家详细介绍了Android实现闹钟小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近写了 闹钟的程序,看到SharedPrefe ...

  8. android espresso跨程序,Android Espresso:依次运行多个测试

    我正在尝试使用Espresso for Android进行一系列测试.运行之间似乎没有关闭活动.一次测试后,无论应用程序状态如何,左侧为下一次测试. 如何用Espresso来实现? 错误报告中提供的修 ...

  9. android关键应用程序,Android应用程序基础.pdf

    创新自我 创造价值 创新办公室Innovation Office www innovation 创新办公室 Innovation Office www innovation 周行 admin zhou ...

最新文章

  1. 锁定计算机的事件日志,关闭并重新启动计算机后意外地在系统事件日志中记录了事件 ID 6008...
  2. 北大校长王恩哥送给毕业生的十句话
  3. windows下安装cygwin及配置
  4. CentOS安装Navicat
  5. 企业证书系列之数据加密
  6. 发布dotNetCore程序到Kubernetes
  7. 在命令提示符下输入的命令
  8. Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析
  9. android 自定义 radiobutton 文字颜色随选中状态而改变
  10. Linux-Ubuntu安装JDK
  11. 华山论“件”:Kafka、RabbitMQ、RocketMQ技能大比拼
  12. linux装mongodb数据库,Linux下安装配置MongoDB数据库
  13. android自定义控件 jar,Android Studio引用自定义的framework.jar包
  14. 我的程序员之路(英语的学习)
  15. [渝粤教育] 广东-国家-开放大学 21秋期末考试互联网营销概论10092k2
  16. 3.React学习笔记(完)----nodejs命令备份+跨域问题处理
  17. 如何将浮点数点左边的数每三位添加一个逗号,如12000000.11转化为『12,000,000.11』...
  18. python日历图_Python干货宝典!玩转内置模块:日历模块
  19. 云打码案例 python
  20. 标签打印机TSPL打印指令

热门文章

  1. 微盟程序员删库跑路,被判刑六年!
  2. pytest-pytest.main()运行测试用例,pytest参数
  3. URL must not be null
  4. Restoration forWeakly Blurred and Strongly Noisy Images 阅读理解
  5. 简单c语言程序(switch语句)输入1-7,输出周一到周日
  6. _putw、putc、puts和putchar应用差别
  7. Redis——redis配置与优化
  8. HGU3336 Count the string (KMP Next数组的应用)
  9. 2021CCPC上海省赛题解ABCDEGHIJK
  10. 2016 -Nginx的负载均衡 - 一致性哈希 (Consistent Hash)