当前位置: 移动技术网 > IT编程>移动开发>Android > Android​短信验证码倒计时验证的2种常用方式

Android​短信验证码倒计时验证的2种常用方式

2019年07月24日  | 移动技术网IT编程  | 我要评论

七个字的成语,快乐大本营 陈乔恩,阿穆纳伊之杖

前言

​本文主要介绍的是短信验证码功能,这里总结了两种常用的方式,可以直接拿来使用。

看图


计时器

说明:这里的及时从10开始,是为了演示的时间不要等太长而修改的。

方法如下

1、第一种方式:timer

/**
 * description:自定义timer
 * <p>
 * created by mjj on 2016/12/4.
 */

public class timecount extends countdowntimer {

  private button button;

  //参数依次为总时长,和计时的时间间隔
  public timecount(button button, long millisinfuture, long countdowninterval) {
    super(millisinfuture, countdowninterval);
    this.button = button;
  }

  //计时过程显示
  @override
  public void ontick(long millisuntilfinished) {
    string time = "(" + millisuntilfinished / 1000 + ")秒";
    setbuttoninfo(time, "#c1c1c1", false);
  }

  //计时完毕时触发
  @override
  public void onfinish() {
    setbuttoninfo("重新获取", "#f95353", true);
  }

  /**
   * 验证按钮在点击前后相关设置
   *
   * @param content 要显示的内容
   * @param color  颜色值
   * @param isclick 是否可点击
   */
  private void setbuttoninfo(string content, string color, boolean isclick) {
    button.settext(content);
    button.setbackgroundcolor(color.parsecolor(color));
    button.setclickable(isclick);
  }
}

说明:根据自己的需求,在这里修改背景颜色和不同状态显示文字即可,在需要监听的按钮下直接调用new timercount(xxx,xxx,xxx).start()即可。

2、第二种方式:handler

/**
   * 第二种方式:使用handler
   * <p>
   * 静态内部类:避免内存泄漏
   */
  private static class myhandler extends handler {

    private final weakreference<mainactivity> weakreference;

    public myhandler(mainactivity activity) {
      weakreference = new weakreference<mainactivity>(activity);
    }

    @override
    public void handlemessage(message msg) {
      super.handlemessage(msg);
      mainactivity activity = weakreference.get();
      if (activity != null) {
        switch (msg.what) {
          case 0:
            if (msg.arg1 == 0) {
              btn2.settext("重新获取");
              btn2.setbackgroundcolor(color.parsecolor("#f95353"));
              btn2.setclickable(true);
            } else {
              btn2.settext("(" + msg.arg1 + ")秒");
              btn2.setbackgroundcolor(color.parsecolor("#c1c1c1"));
              btn2.setclickable(false);
            }
            break;
        }
      }
    }
  }

  /**
   * 监听按钮下直接调用即可
   */
  private void sendmessageclick() {
    new thread(new runnable() {
      @override
      public void run() {
        for (int i = 59; i >= 0; i--) {
          message msg = myhandler.obtainmessage();
          msg.arg1 = i;
          myhandler.sendmessage(msg);
          try {
            thread.sleep(1000);
          } catch (interruptedexception e) {
            e.printstacktrace();
          }
        }
      }
    }).start();
  }

说明:此种方式采用的handler实时接收消息来设置button的状态,对于消息的发送用的是sendmessage方式,也可以使用post方式。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定帮助,如果有疑问大家可以留言交流。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网