简单实现Android验证码

发布时间 - 2026-01-10 21:48:50    点击率:

安卓验证码的简单实现

我们经常在登录或者注册的时候要求输入验证码,这里简单介绍一下一种方法
效果如下

首先是要获取 随机的四个字母组合,我这里是将26个字母存储到一个数组中,然后随机生成4个下标值,取这四个下标值对应的字母作为验证码。

public class RandomChars {
  char[] chars;

  public RandomChars() {
    chars = new char[26];
    for (int i = 0; i < 26; i++) {
      chars[i] = (char) (i + 65);
    }
  }

  public char[] get4Chars() {
    char[] rlt = new char[4];
    for (int i = 0; i < rlt.length; i++) {
      int randomIndex = (int) (Math.random() * 26);
      rlt[i] = chars[randomIndex];
    }
    return rlt;
  }
}

自定义一个CodeView进行验证码的绘制,主要在onDraw方法中操作,学艺不精,还不能好好在onMeasure中控制大小位置等。

    float unitWidth = (float) getWidth() / (float) chars.length;
    for (int i = 0; i < chars.length; i++) {
      String str = chars[i] + "";
      textPaint.getTextBounds(str, 0, str.length(), mRect);
      resetColor();
      int angel = (int) (Math.random()*(8-(-8)+1)+(-8));
      canvas.rotate(angel);//旋转字母,随机角度
      canvas.drawText(str, i * unitWidth + 5, getHeight() / 2 - mRect.centerY(), textPaint);
      /**
       * 很关键,旋转
       */
      canvas.save();//保存状态
      canvas.restore();//恢复
    }

/**
 * 重新设置随机颜色
 */
  private void resetColor() {
    int r = (int) (Math.random() * 230 - 30);
    int g = (int) (Math.random() * 230 - 30);
    int b = (int) (Math.random() * 230 - 30);
    textPaint.setColor(Color.rgb(r, g, b));
  }

设置该控件并传入四个字符就ok了,验证是否输入正确的时候,考虑到大小写问题,所以将输入的字母全部转换成大写,一般都是不区分大小写。

    submit.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        String inputStr = input.getText().toString();
        inputStr = inputStr.toUpperCase();
        str = str.toUpperCase();
        if (str.equals(inputStr)) {
          Toast.makeText(MainActivity.this, "输入正确", Toast.LENGTH_SHORT).show();
        }else{
          Toast.makeText(MainActivity.this, "验证码输入错误", Toast.LENGTH_SHORT).show();
          char[] getchar = randomChars.get4Chars();
          str = new String(getchar);
          codeView.setChars(getchar);
        }
      }
    });

感觉还有挺多不足的地方,以后继续改进吧!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # 验证码  # Android获取验证码倒计时显示效果  # Android自定义View绘制随机生成图片验证码  # Android实现短信验证码自动填写  # Android采取ContentObserver方式自动获取验证码  # Android短信验证码自动填充功能  # Android实现短信验证码获取自动填写功能(详细版)  # Android注册登录实时自动获取短信验证码  # Android开发工程中集成mob短信验证码功能的方法  # Android手机号注册、绑定手机号获取短信验证码实例  # Android获取和读取短信验证码的实现方法  # 都是  # 考虑到  # 自定义  # 还不能  # 转换成  # 介绍一下  # 大家多多  # 挺多  # 组中  # 这四个  # Math  # random  # return  # get4Chars  # rlt  # randomIndex  # length  # setChars  # unitWidth 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在云指建站中生成FTP站点?  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel如何自定义错误页面(404, 500)?(代码示例)  香港服务器租用每月最低只需15元?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  java ZXing生成二维码及条码实例分享  简单实现Android文件上传  网站制作软件有哪些,制图软件有哪些?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  EditPlus 正则表达式 实战(3)  北京网站制作的公司有哪些,北京白云观官方网站?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  iOS UIView常见属性方法小结  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Laravel如何处理文件下载请求?(Response示例)  文字头像制作网站推荐软件,醒图能自动配文字吗?  网易LOFTER官网链接 老福特网页版登录地址  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何实现javascript表单验证_正则表达式有哪些实用技巧  网站建设整体流程解析,建站其实很容易!  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel如何与Inertia.js和Vue/React构建现代单页应用  郑州企业网站制作公司,郑州招聘网站有哪些?  如何在建站宝盒中设置产品搜索功能?  长沙做网站要多少钱,长沙国安网络怎么样?  Android 常见的图片加载框架详细介绍  Laravel如何发送系统通知?(Notification渠道示例)  js代码实现下拉菜单【推荐】  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Laravel如何实现本地化和多语言支持?(i18n教程)  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何撰写建站申请书?关键要点有哪些?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  海南网站制作公司有哪些,海口网是哪家的?  jquery插件bootstrapValidator表单验证详解  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  javascript中闭包概念与用法深入理解  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?