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
0
投稿
猜你喜欢
- 二叉树的分类(按存储结构)树的分类(按存储结构) &nbs
- 打包发布jar包部署相对较为简单,尤其是在分布式服务比较多的情况下。单体项目如果是单体项目,只需要找到maven的插件,点击package运
- 本文栈长教你如何在 Spring Boot 注册 Servlet、Filter、Listener。一、Spring Boot 注册Sprin
- 摘要:最近在做任务管理,任务可以无限派生子任务且没有数量限制,前端采用Easyui的Treegrid树形展示控件。一、遇到的问题获取全部任务
- 里氏替换原则,OCP作为OO的高层原则,主张使用“抽象(Abstraction)”和“多态(Polymorphism)”将设计中的静态结构改
- instanceof判断某个对象是否是某个类的实例或者某个类的子类的实例。它的判断方式大概是这样的:public<T> bool
- 创建项目在主界面的左侧菜单选 新建在向导中选择 输入项目名称,类型选择 构建一个自由风格的软件项目点确定进入项目的配置界面源码管理 选择gi
- 本文实例讲述了Java中缀表达式转后缀表达式实现方法。分享给大家供大家参考,具体如下:本文先给出思路与方法,最后将给出完整代码项目实战:ht
- 第1部分 TreeSet介绍TreeSet简介TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSe
- 很多学习Android程序设计的人都会发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同。因此本文就把这些写法总
- 代理对象的生成方法是:Proxy.newProxyInstance(...) ,进入这个方法内部,一步一步往下走会发现会调用ProxyGen
- 1、锁优化在JDK6之前,通过synchronized来实现同步效率是很低的,被synchronized包裹的代码块经过javac编译后,会
- 目录一.什么是负载均衡二.负载均衡的简单分类三.为什么需要做负载均衡四.springCloud如何开启负载均衡五.IRule1.Random
- webclient在调用DownloadData或者DownloadString的时候请求回来的数据出现乱码问题,解决办法如下:1、设置we
- Failed to execute goal org.apache.maven.plugins:maven-resources-plugin
- 这篇文章主要介绍了springboot跨域CORS处理代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 本文实例为大家分享了Java实现窗体程序显示日历的具体代码,供大家参考,具体内容如下实训要求:1.使用BorderLayout 进行总体布局
- 在java中常常会遇到这样一个问题,在实际应用中,总会碰到对List排序并过滤重复的问题,如果List中放的只是简单的String类型过滤s
- 本文实例讲述了WinForm调用jar包的方法。分享给大家供大家参考,具体如下:因为工作需要,需要做一个数据上传的程序,客户规定的是:数据接
- 功能介绍大家都知道在Spring boot开发过程中,需要在配置文件里配置许多信息,如数据库的连接信息等,如果不加密,传明文,数据库就直接暴