android 密码解锁程序,android 仿ios数字密码解锁界面的实例
如下所示:
每个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数字密码解锁界面的实例相关推荐
- Android设置透明状态栏,仿ios状态栏
为什么80%的码农都做不了架构师?>>> Android设置透明状态栏,仿ios状态栏 设置透明状态栏后,效果如下: 我的实现思路是: 在根布局上添加一块布局 添加了一块线性布 ...
- android home跳转,Android 中按home键和跳转到主界面的实例代码
Android 中按home键和跳转到主界面的实例代码 //home Intent intent= new Intent(Intent.ACTION_MAIN); intent.setFlags(In ...
- android金币动效_Android 仿余额宝数字跳动动画效果完整代码
一:想都不用想的,有图有真相,看着爽了,在看下面源码 二:实例源码分析 ①:首先定义接口 package com.demo.tools.view; /** * 数字动画自定义 * * @author ...
- Android 文件夹放大缩小仿IOS融合动画效果
效果如下,打开文件夹时从小到大与最终位置大小吻合,关闭文件夹时缩小到图标原有位置做到无缝融合效果. 过程分析 (一)文件展开后的布局 如上图文件夹打开后布局层次 1.最下面时背景层(背景不移动但有透明 ...
- android 基础应用程序,android应用程序基本实现(基础篇).ppt
<android应用程序基本实现(基础篇).ppt>由会员分享,可在线阅读,更多相关<android应用程序基本实现(基础篇).ppt(22页珍藏版)>请在人人文库网上搜索. ...
- android系统应用程序,Android系统应用程序基本概念解读
经常关注我们51CTO的朋友们应该知道,在以前的文章中我们对Android这一手机系统有一个详细的跟踪介绍,方便大家学习应用这一新的功能强大的开源手机系统,比如对Android源码的编译的解析的解析等 ...
- android小闹钟程序,Android实现闹钟小程序.pdf
Android实实现现闹闹钟钟小小程程序序 这篇文章主要为大家详细介绍了Android实现闹钟小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近写了 闹钟的程序,看到SharedPrefe ...
- android espresso跨程序,Android Espresso:依次运行多个测试
我正在尝试使用Espresso for Android进行一系列测试.运行之间似乎没有关闭活动.一次测试后,无论应用程序状态如何,左侧为下一次测试. 如何用Espresso来实现? 错误报告中提供的修 ...
- android关键应用程序,Android应用程序基础.pdf
创新自我 创造价值 创新办公室Innovation Office www innovation 创新办公室 Innovation Office www innovation 周行 admin zhou ...
最新文章
- 锁定计算机的事件日志,关闭并重新启动计算机后意外地在系统事件日志中记录了事件 ID 6008...
- 北大校长王恩哥送给毕业生的十句话
- windows下安装cygwin及配置
- CentOS安装Navicat
- 企业证书系列之数据加密
- 发布dotNetCore程序到Kubernetes
- 在命令提示符下输入的命令
- Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析
- android 自定义 radiobutton 文字颜色随选中状态而改变
- Linux-Ubuntu安装JDK
- 华山论“件”:Kafka、RabbitMQ、RocketMQ技能大比拼
- linux装mongodb数据库,Linux下安装配置MongoDB数据库
- android自定义控件 jar,Android Studio引用自定义的framework.jar包
- 我的程序员之路(英语的学习)
- [渝粤教育] 广东-国家-开放大学 21秋期末考试互联网营销概论10092k2
- 3.React学习笔记(完)----nodejs命令备份+跨域问题处理
- 如何将浮点数点左边的数每三位添加一个逗号,如12000000.11转化为『12,000,000.11』...
- python日历图_Python干货宝典!玩转内置模块:日历模块
- 云打码案例 python
- 标签打印机TSPL打印指令
热门文章
- 微盟程序员删库跑路,被判刑六年!
- pytest-pytest.main()运行测试用例,pytest参数
- URL must not be null
- Restoration forWeakly Blurred and Strongly Noisy Images 阅读理解
- 简单c语言程序(switch语句)输入1-7,输出周一到周日
- _putw、putc、puts和putchar应用差别
- Redis——redis配置与优化
- HGU3336 Count the string (KMP Next数组的应用)
- 2021CCPC上海省赛题解ABCDEGHIJK
- 2016 -Nginx的负载均衡 - 一致性哈希 (Consistent Hash)