Android实现手势密码功能
作者:ZhengJiaoCsdn 发布时间:2023-08-29 05:41:07
标签:Android,手势密码
本文实例为大家分享了Android实现手势密码功能的具体代码,供大家参考,具体内容如下
首先声明一下,九宫格布局是从网上扒了一个大神写好的,大家在项目中实现的话可以直接把:
Drawl,GuestureLockView,Point类直接复制到自己的项目中;
想了解功能的可以仔细看下源码中的这三个类,里面写的也非常详细;
使用GuestureLockView的三个步:
1、初始化布局容器;
2、初始化GuestureLockView;
3、将GuestureLockView添加到布局容器中:
创建GuestureLockView:
GuestureLockView mGuestureLockView=new GuestureLockView(context, new Drawl.GestureCallBack() {
@Override
public void checkedSuccess(String password) {
}
@Override
public void checkedFail() {
}
});
这里面有两个回调,checkedSuccess()代表成功的回调,也就是你在页面中初始化的图形界面,其实就是一个String类型的字符串;
checkedFail()失败的回调,这里几乎用不到;
给GuestureLockView设置父布局:
mGuestureLockView.setParentView(mFrameLayout);
在这个demo中,设置好的密码保存在sp中,主页面也是根据sp是否存在判断密码是否已经设置,
如果没有设置密码点击重置密码提示:没有设置密码;
设置密码需要设置两遍,防止用户误操作;
当点击设置密码的时候会根据一个全局变量来判断你是第1遍设置密码还是第二遍,
如果两次密码输入一样,保存成功,直接保存在sp中,如果不一样,设置密码失败,需要重新设置;
布局只有两个button,这里就不复制了,咱们看下设置密码的activity中创建GuestureLockView的逻辑:
mGuestureLockView=new GuestureLockView(context, new Drawl.GestureCallBack() {
@Override
public void checkedSuccess(String password) {
//首先判断一下用户是否已经设置密码
if(TextUtils.isEmpty(pwd)){
//如果为空,代码没有设置密码,需要设置新的密码;
// 设置新密码需要设置两遍,防止用户误操作;
// 第一遍设置的新密码保存在Variate类的一个变量中,这个变量默认为null
if(TextUtils.isEmpty(Variate.PASSWORD)){
//如果这个变量为null,第一次将密码保存在Variate.PASSWORD提示再次输入密码,
Variate.PASSWORD=password;
ToastUtils.showToast(context,"请再次输入密码");
// 并且刷新当前页面
refresh();
}else {
//如果Variate.PASSWORD不为空代表是第二次输入新密码,判断两次输入密码是否相同
if(password.equals(Variate.PASSWORD)){
//如果相同,将密码保存在当地sp中
sp.edit().putString("pwd",password).commit();
// 进入主页面,点击输入密码,输入设置的密码进入“搏击爱好者”页面
ToastUtils.showToast(context,"密码设置成功,请输入新密码");
refresh();
}else {
//如果两次输入密码不一样,将Variate.PASSWORD设为null,提示密码设置失败
Variate.PASSWORD=null;
ToastUtils.showToast(context,"密码设置失败");
// 跳回主页面需重新设置密码
Intent intent=new Intent(GuestureLockActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
}else{
//如果已经设置密码,判断输入密码和保存密码是否相同
if(pwd.equals(password)){
//如果相同,密码正确,进入”搏击爱好者“页面
Intent intent=new Intent(GuestureLockActivity.this,BoJiAiHaoZheActivity.class);
startActivity(intent);
finish();
}else {
//如果不相同,密码错误,刷新当前activity,需重新输入密码
Toast.makeText(context,"密码错误",Toast.LENGTH_SHORT).show();
refresh();
}
}
}
源码下载
来源:http://blog.csdn.net/zheng_jiao/article/details/51537535


猜你喜欢
- 本文实例为大家分享了java实现滑动验证解锁的具体代码,供大家参考,具体内容如下1.html:<div class="dra
- 今天带大家实现滑动返回效果.,具体内容如下所示:先看看效果图:因为没有具体内容,也没有简书的图片资源,所以稍微简陋了点.但是依然不妨碍我们的
- 前言最近接到个需求,不使用第三方SDK的情况下实现IM通讯,文字聊天已经通过MQTT实现,而语音功能目前想到的较好解决方案就是进行录音文件的
- int a = 5; int b = 30; Console.WriteLine(a^b);&n
- 所需引入Jar包:jms-1.1.jaractivemq-all-5.15.0.jar生产者package com.mousewheel.d
- 开发一个需要常住后台的App其实是一件非常头疼的事情,不仅要应对国内各大厂商的ROM,还需要应对各类的安全管家...虽然不断的研究各式各样的
- 游标查询(scroll)简介scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种
- 一、需求Jenkins大多数情况下都是用来部署Java项目,Java项目有一个特点是>需要编译和打包的,一般情况下编译和打包都是用ma
- 登陆是系统最基础的功能之一。这么长时间了,一直在写业务,这个基础功能反而没怎么好好研究,都忘差不多了。今天没事儿就来撸一下。以目前在接触和学
- 问题今天在springboot中使用mybatis的时候不能字段不能够进行自动映射,mybatis的版本是3.5.11,数据库是按照下划线进
- 看过阿里巴巴开发手册的同学应该都会对Integer临界值127有点印象。原文中写的是:【强制】所有整型包装类对象之间值的比较,全部使用 eq
- 网上看到的很多winform窗体圆角设计代码都比较累赘,这里分享一个少量代码就可以实现的圆角。主要运用了System.Drawing.Dra
- 众所周知Web服务器与客户端之间的通信是使用HTTP协议的。HTTP是一个客户端和服务器端请求和应答的标准(TCP)。因为HTTP协议是基于
- 现阶段的问题现在是云原生和容器化时代,.NET Core对于云原生来说有非常好的兼容和亲和性,dotnet社区以及微软为.NET Core提
- 本文分享的示例代码实现提取2个集合中相同和不同的元素此处需要使用Collection集合所提供的一个方法:removeAll(Cellect
- 近日,开发者头条上分享了一篇“小米java第二轮面经”,有很多的java程序员表示非常有兴趣。下面就和各位分享小米java第二轮面经:0、谈
- 本文实例讲述了C#实现在启动目录创建快捷方式的方法。分享给大家供大家参考。具体如下:添加引用,选择 COM 选项卡并选择 Windows S
- 随着kotlin在Android开发领域越来越火,协程在各个项目中的应用也逐渐变得广泛但是协程到底是什么呢?协程其实是个古老的概念,已经非常
- 本文实例讲述了C#判断系统是32位还是64位的方法。分享给大家供大家参考。具体如下:public static int GetOSBit()
- 一、File流概念 JAVA中针对文件的读写操作设置了一系列的流,其