全网整合营销服务商

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

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


相关文章: 如何在Windows虚拟主机上快速搭建网站?  如何彻底删除建站之星生成的Banner?  如何通过商城免费建站系统源码自定义网站主题?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何通过VPS建站实现广告与增值服务盈利?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  建站主机无法访问?如何排查域名与服务器问题  代刷网站制作软件,别人代刷火车票靠谱吗?  建站之星如何助力企业快速打造五合一网站?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Python文件管理规范_工程实践说明【指导】  建站ABC备案流程中有哪些关键注意事项?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  如何在香港免费服务器上快速搭建网站?  如何快速搭建自助建站会员专属系统?  营销式网站制作方案,销售哪个网站招聘效果最好?  如何在自有机房高效搭建专业网站?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  如何快速搭建高效WAP手机网站吸引移动用户?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Thinkphp 中 distinct 的用法解析  如何制作网站标识牌,动态网站如何制作(教程)?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  c# await 一个已经完成的Task会发生什么  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  图册素材网站设计制作软件,图册的导出方式有几种?  C++中引用和指针有什么区别?(代码说明)  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  制作网站的模板软件,网站怎么建设?  公司网站的制作公司,企业网站制作基本流程有哪些?  常州企业建站如何选择最佳模板?  建站之星安装步骤有哪些常见问题?  如何破解联通资金短缺导致的基站建设难题?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  定制建站方案优化指南:企业官网开发与建站费用解析  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站之星如何快速更换网站模板?  建站之星如何实现PC+手机+微信网站五合一建站?  盘锦网站制作公司,盘锦大洼有多少5G网站?  移民网站制作流程,怎么看加拿大移民官网?  建站之星在线客服如何快速接入解答?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  微课制作网站有哪些,微课网怎么进?  已有域名能否直接搭建网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何在Golang中指定模块版本_使用go.mod控制版本号 

您的项目需求

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