全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

简单实现Android验证码

安卓验证码的简单实现

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

首先是要获取 随机的四个字母组合,我这里是将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 


相关文章: 国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  ,如何利用word制作宣传手册?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  建站三合一如何选?哪家性价比更高?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  定制建站流程步骤详解:一站式方案设计与开发指南  如何通过IIS搭建网站并配置访问权限?  建站之星×万网:智能建站系统+自助建站平台一键生成  如何使用Golang table-driven基准测试_多组数据测量函数效率  高性价比服务器租赁——企业级配置与24小时运维服务  建站之星与建站宝盒如何选择最佳方案?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  建站之星上传入口如何快速找到?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  建站上市公司网站建设方案与SEO优化服务定制指南  如何获取免费开源的自助建站系统源码?  名字制作网站免费,所有小说网站的名字?  建站之星如何取消后台验证码生成?  Python lxml的etree和ElementTree有什么区别  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  已有域名和空间如何搭建网站?  贸易公司网站制作流程,出口贸易网站设计怎么做?  如何在局域网内绑定自建网站域名?  如何高效搭建专业期货交易平台网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  小建面朝正北,A点实际方位是否存在偏差?  表情包在线制作网站免费,表情包怎么弄?  建站之星安装提示数据库无法连接如何解决?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  c# 在ASP.NET Core中管理和取消后台任务  如何挑选最适合建站的高性能VPS主机?  如何快速生成ASP一键建站模板并优化安全性?  如何快速搭建个人网站并优化SEO?  网站专业制作公司有哪些,做一个公司网站要多少钱?  怀化网站制作公司,怀化新生儿上户网上办理流程?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何用wdcp快速搭建高效网站?  活动邀请函制作网站有哪些,活动邀请函文案?  建站主机是否等同于虚拟主机?  如何快速选择适合个人网站的云服务器配置?  如何在VPS电脑上快速搭建网站?  婚礼视频制作网站,学习*后期制作的网站有哪些?  Java解压缩zip - 解压缩多个文件或文件夹实例  营销式网站制作方案,销售哪个网站招聘效果最好?  如何零成本快速生成个人自助网站?  网站制作免费,什么网站能看正片电影?  大连网站设计制作招聘信息,大连投诉网站有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。