PassCode - 打造一个简单易用的安全锁类库

PassCode

现在,大多数应用都会有相关的安全码验证操作,其主要目的是当操作一些关乎用户隐私和数据安全时会触发访问权限。借这次项目有这方面的需求,我也小试牛刀,封装一个 PassCode Library, 其核心类为 PassCodeView,同时支持接入系统软键盘和自定义键盘两种方式。文章末尾有源码下载。

一. 运行效果

1. 自定义键盘

2. 系统键盘

二. 使用介绍

1. 快速入门
  • 创建布局文件 activity_main.xml,同时添加 PassCodeView 控件
<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/shape_bg"
    android:fitsSystemWindows="true"
    tools:context="com.anenn.demo.SimplePassCodeActivity">

    <TextView
        android:id="@+id/tvTip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="92dp"
        android:text="@string/pass_code"
        android:textColor="#ffffff"
        android:textSize="18sp" />

    <com.anenn.passcode.PassCodeView
        android:id="@+id/passCodeView"
        android:layout_width="120dp"
        android:layout_height="25dp"
        android:layout_below="@+id/tvTip"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="42dp"
        android:gravity="center_vertical"
        app:circleColor="@color/passCode_circle_color"
        app:circleRadius="5dp"
        app:passCodeLength="4"
        app:strokeColor="@color/passCode_stroke_color"
        app:strokeWidth="1.5dp" />
</RelativeLayout>
  • 打开 Actiivty,申明 PassCode 控件并设置监听事件
PassCodeView mPassCodeView = (PassCodeView) findViewById(R.id.passCodeView);
mPassCodeView.setOnPassCodeFillListener(new OnPassCodeFillListener() {
    @Override
    public void passCodeFill(String passCode) {
        if (mPassCode == null) {
            mPassCode = passCode;
        } else if (mPassCode.equals(passCode)) {
            mPassCode = null;
            Toast.makeText(SimplePassCodeActivity.this, "Passcode is matched, welcome!", Toast.LENGTH_LONG).show();
        } else {
            mPassCode = null;
            Toast.makeText(SimplePassCodeActivity.this, "Passcode is not matched, please try again!", Toast.LENGTH_LONG).show();
        }
    }
});
2. 功能分析

PassCodeView 控件具有如下一些自定义的属性:

// Custom Attributes
private int strokeColor; // 边框颜色
private int strokeWidth; // 边框厚度
private int circleColor; // 实心圆的颜色
private int circleRadius; // 实心圆的半径
private int passCodeLength; // 密码长度
private boolean autoCleanPassCode; // 是否允许自动清除
private boolean isEditable; // 是否可编辑

这里对两个属性做一下说明:

  1. autoCleanPassCode: 表示当用户输入的密码长度等于设置的密码长度时,此时是否触发清除界面密码数据事件
  2. isEditable: 表示当使用手机默认的输入法时,默认弹出软键盘;在使用自定义输入法时,该位必须手动置为 false。

PassCodeView 包含有一个事件回调接口 OnPassCodeFillListener,其作用是当用户输入的密码位数等于指定密码长度时,如果设置了 OnPassCodeFillListener,则会调用其 passcodeFill(String passCode) 方法。

InputMethodView 是一个自定义的键盘控件,在该类中已经封装了事件触发及响应方法,开发者只需通过 InputMethodView 的 setupPassCode() 方法,将 PassCodeView 对象与 InputMethodView 进行关联就可以正常使用了。

使用起来很简单,原理也不复杂。详情请看源码,喜欢的请给个 Star

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值