全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站主机选虚拟主机还是云服务器更好?  C#怎么创建控制台应用 C# Console App项目创建方法  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  微信推文制作网站有哪些,怎么做微信推文,急?  想学网站制作怎么学,建立一个网站要花费多少?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在服务器上三步完成建站并提升流量?  建站之星如何助力网站排名飙升?揭秘高效技巧  建站主机是什么?如何选择适合的建站主机?  如何在自有机房高效搭建专业网站?  网站企业制作流程,用什么语言做企业网站比较好?  如何在阿里云虚拟服务器快速搭建网站?  怀化网站制作公司,怀化新生儿上户网上办理流程?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  网站制作软件有哪些,制图软件有哪些?  小程序网站制作需要准备什么资料,如何制作小程序?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何选择高效响应式自助建站源码系统?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  常州自助建站费用包含哪些项目?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  浅析上传头像示例及其注意事项  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  做企业网站制作流程,企业网站制作基本流程有哪些?  黑客如何通过漏洞一步步攻陷网站服务器?  建站之星安装后如何配置SEO及设计样式?  如何在阿里云通过域名搭建网站?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何实现建站之星域名转发设置?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  宁波自助建站系统如何快速打造专业企业网站?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  定制建站流程解析:需求评估与SEO优化功能开发指南  北京的网站制作公司有哪些,哪个视频网站最好?  建站之家VIP精选网站模板与SEO优化教程整合指南  如何用腾讯建站主机快速创建免费网站?  深圳网站制作的公司有哪些,dido官方网站?  建站之星北京办公室:智能建站系统与小程序生成方案解析  完全自定义免费建站平台:主题模板在线生成一站式服务  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站? 

您的项目需求

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