Android 原生应用验证码糊化展示
大概长这样~
需求背景
维护老版本应用,里面有自生成的验证码(非短信码,类似网页上的那个,让你输入几个字符的玩意儿),原来的就是个TextView里面展示几个数字,现在客户说不安全,容易被识破 ,需要增加复杂程度,于是就有了现在的这个东西。
分析思路
看了Web的一些案例,多是以文字糊化、文字扭曲、增加噪点、干扰线等方式,决定采用噪点、干扰线作为主要的糊化策略。搜了下前辈们的文章,其中这篇文章的内容比较容易上手,于是拿这里的代码进行修改。
实现的功能
看下图吧,大概就是这些,另外还有个自定义字符组的功能,参照后续源码。
工具类代码
package fun.chice.verificationcode;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.widget.ImageView;
import java.util.Random;
/**
* Verification code creator.
* Created by Chice on 2018/9/27.
* Email:2206143885@qq.com
* CSDN:http://blog.csdn.net/chicet
*/
public class VerificationCodeCreator {
private final char[] CODE_CHARS = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm',
'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E',