Android 5秒学会使用手势解锁功能

Android手势解锁

本文讲述的是一个手势解锁的库,可以定制显示隐藏宫格点、路径、并且带有小九宫格显示图,和震动!让你学会使用这个简单,高效的库!

先来一波效果效果展示:

手势解锁效果

今天给大家介绍的是本人良心制作的一个手势解锁开源库,大家有什么建议和想法都可以发到我的邮箱: diosamolee2014@gmail.com 或者评论,我会为大家提供我力所能及的帮助!

GitHub地址:

https://github.com/Diosamo/Gesture_Lock

添加依赖:

添加的gradle

第一步:

Add it in your root build.gradle at the end of repositories:
repositories {
 maven {  url "https://dl.bintray.com/freecoders/GestureLock"
 }
}

第二步:

Step 2. Add the dependency

dependencies {
   compile 'com.gesturelock:GestureLock:1.0'
}

布局使用:

下面是我测试时写的完整的所有布局:(懒人直接copy)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 android:background="#ffffff"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:gravity="center"
 >
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:gravity="center_horizontal"
  android:padding="50dp">
  <TextView
   android:textColor="#434242"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="16sp"
   android:text="绘制图案"
   android:paddingBottom="10dp"/>
  <com.gestruelock.IndicatorLockView
   android:id="@+id/lockviewIndicator"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   app:indicator_selected="@drawable/indicator_selected"
   app:indicator_unselected="@drawable/indicator_unselected"
   android:layout_gravity="center_horizontal"/>
  <TextView
   android:id="@+id/tvMessage"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="14sp"
   android:text=""
   android:paddingTop="20dp"
   />
  <RelativeLayout
   android:id="@+id/rl"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:paddingTop="30dp"
   >
   <com.gestruelock.ExpandLockView
    android:id="@+id/lockviewExpand"
    android:layout_width="280dp"
    android:layout_height="280dp"
    app:lock_selected1="@drawable/gusture_icon_left"
    app:lock_selected2="@drawable/gusture_icon_center"
    app:lock_selected3="@drawable/gusture_icon_right"
    app:lock_trackColor="#ff0432"
    app:lock_selected_error="@drawable/circle_error"
    app:lock_unselected="@drawable/gusture_icon_default"
    android:layout_gravity="center_horizontal"/>
  </RelativeLayout>
 </LinearLayout>
</RelativeLayout>

到这里小伙伴直接运行,就可以看到手势解锁的布局,大家也可以根据自己的需求去改变这个xml.

com.gestruelock.IndicatorLockView : 路径显示图,小的九个点
com.gestruelock.ExpandLockView: 手势解锁的九宫格

使用配置:

下面的代码是在Activity中直接使用的代码:(懒人直接copy)

public class MainActivity extends AppCompatActivity implements ExpandLockView.OnLockPanelListener, ExpandLockView.OnUpdateIndicatorListener, ExpandLockView.OnUpdateMessageListener, ExpandLockView.OnFinishDrawPasswordListener {
 private ExpandLockView mLockviewExpand;
 private IndicatorLockView lockviewIndicator;
 private TextView tvMessage;
 private Animation mShakeAnimal;
 private Vibrator mVibrator;
 //返回信息如果是正确的
 private String succeeMsg="再次输入密码,密码已设置,密码正确,密码正确,请输入新密码";
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
   mLockviewExpand = (ExpandLockView) findViewById(R.id.lockviewExpand);
  tvMessage = (TextView) findViewById(R.id.tvMessage);
  lockviewIndicator = (IndicatorLockView) findViewById(R.id.lockviewIndicator);
  mVibrator =(Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE); //震动
//  mLockviewExpand.getPaintL().setStrokeWidth(20); //获取paint 修改连接线段的样式
//  mLockviewExpand.setLock_trackColor(0xff0000); //给路径设置不同颜色
  //加载动画资源文件
  mShakeAnimal = AnimationUtils.loadAnimation(this, R.anim.shake);
  mLockviewExpand.setActionMode(0);//set mode 设置手势密码
//  mLockviewExpand.setActionMode(1);//set mode 验证手势密码
//  mLockviewExpand.setActionMode(2);//set mode 更换手势密码
//  mLockviewExpand.setHiddenTrack(true); //隐藏轨迹和按钮
  mLockviewExpand.setShowError(true); //显示失败视图
//  mLockviewExpand.setLockTime(2);//设置显示的锁住的时间
  //设置各种回调事件
  mLockviewExpand.setOnLockPanelListener(this);
  mLockviewExpand.setOnUpdateIndicatorListener(this);
  mLockviewExpand.setOnUpdateMessageListener(this);
  mLockviewExpand.setOnFinishDrawPasswordListener(this);
 }
 @Override
 public void initData() {
 }
 //密码盘被锁住发生的回调
 @Override
 public void onLockPanel() {
 }
 //更新小点显示图
 @Override
 public void onUpdateIndicator() {
  if (mLockviewExpand.getPointTrace().size() > 0) {
   lockviewIndicator.setPath(mLockviewExpand.getPointTrace());
  }
 }
 //返回信息如果是正确的
 @Override
 public void onUpdateMessage(String message) {
  if (succeeMsg.contains(message)){
   tvMessage.setTextColor(0xff434242);//设置提示文字颜色
  }else {//Error
   tvMessage.setTextColor(0xffe44d4d);
   tvMessage.startAnimation(mShakeAnimal); //动画效果
  }
  tvMessage.setText(message);
 }
 //vibration 震动对应的接口
 @Override
 public void vibration(String time) {
  if ("long".equals(time)){
   mVibrator.vibrate(new long[]{50,200},-1);//长震动
  }else {
   mVibrator.vibrate(new long[]{50,50},-1);//震动
  }
 }
 //设置密码成功
 @Override
 public void onSetPassword() {
  Toast.makeText(mContext, "密码设置成功", Toast.LENGTH_SHORT).show();
  finish();
 }
 //解开密码锁成功
 @Override
 public void onOpenLock() {
  Toast.makeText(mContext, "成功解锁", Toast.LENGTH_SHORT).show();
  finish();
 }
 /* 禁止返回按钮的点击 */
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction()== KeyEvent.ACTION_DOWN &&activityNum == 0) {
   return true;
  } else {
   return super.onKeyDown(keyCode, event);
  }
 }
}

手势解锁一共有3种模式,对应设置密码,验证密码,修改密码:

mLockviewExpand.setActionMode(0);//set mode 设置手势密码
mLockviewExpand.setActionMode(1);//set mode 验证手势密码
mLockviewExpand.setActionMode(2);//set mode 更换手势密码

对应回调接口设置:

mLockviewExpand.setOnLockPanelListener(this);// 手势解锁次数超出后,锁定解锁的回调
 mLockviewExpand.setOnUpdateIndicatorListener(this);//手势完成后的回调,设置上面的路径显示图
 mLockviewExpand.setOnUpdateMessageListener(this);//手势完成后,返回提示的信息
 mLockviewExpand.setOnFinishDrawPasswordListener(this);//手势解锁成功,密码设置成功的回调

其他配置:

mLockviewExpand.getPaintL().setStrokeWidth(20); //获取paint 修改连接线段的样式
mLockviewExpand.setLock_trackColor(0xff0000); //给路径设置不同颜色
mLockviewExpand.setHiddenTrack(true); //隐藏轨迹和按钮
mLockviewExpand.setShowError(true); //显示失败视图
mLockviewExpand.setLockTime(2);//设置显示的锁住的时间
xml配置(com.gestruelock.ExpandLockView 只针对这个控件):

图片的指定就是在这里,可以设置左边,中间和右边的图片,如果一样就全部指定同一张图片,库里面自带上面图片显示效果的图片资源!

app:lock_selected1="@drawable/left" //设置最左边图片
 app:lock_selected2="@drawable/center" //设置最中间图片
 app:lock_selected3="@drawable/right" //设置最右边图片
 app:lock_trackColor="#04ff9b"  //设置轨迹颜色 app:lock_selected_error="@drawable/circle_error" //设置错误图片
app:lock_unselected="@drawable/gusture_icon_default" //设置未选中图片

总结:

以上所述是小编给大家介绍的Android 5秒学会使用手势解锁功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • Android仿支付宝手势密码解锁功能
(0)

相关推荐

  • Android仿支付宝手势密码解锁功能

    Starting 创建手势密码可以查看 CreateGestureActivity.java 文件. 登陆验证手势密码可以看 GestureLoginActivity.java 文件. Features 使用了 JakeWharton/butterknife butterknife 使用了 ACache 来存储手势密码 /** * 保存手势密码 */ private void saveChosenPattern(List<LockPatternView.Cell> cells) { byte[

  • Android 5秒学会使用手势解锁功能

    Android手势解锁 本文讲述的是一个手势解锁的库,可以定制显示隐藏宫格点.路径.并且带有小九宫格显示图,和震动!让你学会使用这个简单,高效的库! 先来一波效果效果展示: 手势解锁效果 今天给大家介绍的是本人良心制作的一个手势解锁开源库,大家有什么建议和想法都可以发到我的邮箱: diosamolee2014@gmail.com 或者评论,我会为大家提供我力所能及的帮助! GitHub地址: https://github.com/Diosamo/Gesture_Lock 添加依赖: 添加的gra

  • Unity实现移动端手势解锁功能

    本文实例为大家分享了Unity实现移动端手势解锁的具体代码,供大家参考,具体内容如下 一.效果演示 二.实现思路 --当鼠标选中一个密码按钮时开始记录输入的数字和鼠标的起始位置 --当鼠标按下过程中,始终根据记录的鼠标起始位置和当前鼠标的位置两个点绘制线段并添加到线段的列表中,并一直清空掉列表中除了最后一个线段外的其余线段 --当鼠标按下过程中,如果有覆盖到其他的密码按钮,则根据起始的密码按钮与当前的密码按钮两个点绘制线段并重新记录输入的数字和鼠标起始位置 三.实现过程 --创建9个密码块,并依

  • android自定义View实现手势解锁

    有时候为了程序的安全性,我们经常要采取一些安全措施,就像我们常用的支付宝那样,隔一定的时间再回到应用程序时会让用户利用手势去解锁应用程序,最近由于项目需求,也要求做这样一个功能,当用户切出本应用程序15分钟后回来,让用户手势解锁,整个需求的难点就在如何实现这个手势锁,开始一点头绪也没有,没有一点思路去实现这个手势解锁功能,在google了一番后看了一篇非常好的博客后,按照博主的思路的确是可以实现一个十分不错的手势锁View,也参考了下那位大神的代码,下面是我根据他的思路和代码片段实现的一个自定义

  • iOS实现手势解锁操作

    本文主要介绍通过手势识别实现手势解锁功能,这个方法被广泛用于手机解锁,密码验证,快捷支付等功能实现.事例效果如下所示. 首先,我们先分析功能的实现过程,首先我们需要先看大致的实现过程: 1.加载九宫格页面 2.实现按钮被点击及滑动过程中按钮状态的改变 3.实现滑动过程中的连线 4.绘制完毕后判定密码是否正确, 5.密码判定后实现跳转. 下面我们就来用代码实现上述五个过程. 1.加载九宫格界面 1.1九宫格内控件的分布 3*3 ,我们可以自定义view(包含3*3个按钮),添加到viewContr

  • iOS实现手势滑动解锁功能简析

    题记 在平常的生活中,我们大概经常遇见手势滑动解锁---也就是九宫格啊,已经出现好久了,虽然随着Apple的指纹解锁的发展手势解锁虽然还有但是因为其不如指纹解锁方便也用的也少了,但是在大多数APP中这两种方式都是并存的,比如qq,微信,支付宝等等,最近项目里面也刚好有这个需求,趁着刚完成抽出时间来记录下来当时的一些思路,可能有的地方理解的不到位,还需多总结,闲言少叙了,看重点. 功能描述如图:大概说一下思路,这个功能用来做相当于密令,用于两端的匹配,教师端设置了路径生成密码,储存在本地,学生端用

  • Android 监听锁屏、解锁、开屏 功能代码

    1.首先定义 ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.PowerManager; /** * Created by ${zyj} on 2016/6

  • Android静默安装实现方案 仿360手机助手秒装和智能安装功能

    之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢?所谓的静默安装,就是不用弹出系统的安装界面,在不影响用户任何操作的情况下不知不觉地将程序装好.虽说这种方式看上去不打搅用户,但是却存在着一个问题,因为Android系统会在安装界面当中把程序所声明的权限展示给用户看,用户来评估一下这些权限然后决定是否要安装该程序,但如果使用了静默安装的方式,也就没有地方让用户看权限了,相当于用户被动接受了这些权限.在Android官方看来,这显示是一种非常危险的行为,因此静默安装这一行为系统是

  • Android 仿小米锁屏实现九宫格解锁功能(无需图片资源)

    最近公司要求做个九宫格解锁,本人用的是小米手机,看着他那个设置锁屏九宫格很好看,就做了该组件,不使用图片资源,纯代码实现. 尊重每个辛苦的博主,在http://blog.csdn.net/mu399/article/details/38734449的基础上进行修改 效果图: 关键代码类: MathUtil.Java /** * @author SoBan * @create 2016/12/5 15:52. */ public class MathUtil { public static dou

  • Android中判断屏幕是否亮屏和是否解锁功能

    1.屏幕是否亮屏: PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); //true为打开,false为关闭 boolean ifOpen = powerManager.isScreenOn(); 2.屏幕是否解锁: KeyguardManager mKeyguardManager = (KeyguardManager) context.getSystemServi

  • Android实现手势密码功能

    本文实例为大家分享了Android实现手势密码功能的具体代码,供大家参考,具体内容如下 首先声明一下,九宫格布局是从网上扒了一个大神写好的,大家在项目中实现的话可以直接把: Drawl,GuestureLockView,Point类直接复制到自己的项目中: 想了解功能的可以仔细看下源码中的这三个类,里面写的也非常详细: 使用GuestureLockView的三个步: 1.初始化布局容器: 2.初始化GuestureLockView; 3.将GuestureLockView添加到布局容器中: 创建

随机推荐