安卓的短信倒计时实现

转载 2016年08月31日 10:28:04
  目前越来越多的app在注册或是进行对应操作时,要求获取短信验证码,在点击了获取短信验证码的按钮后,就是出现倒计时,比如倒计时120S,在倒计时 期间内,按钮点击是无效的,当倒计时结束后,如果你没有获取到验证码,可以再次点击。实现倒计时的方法很多,我们今天就通过继承 androidos.CountDownTimer类来实现!

     首先看下我们封装的倒计时工具类,主要为了在多个地方用到的话,用了多个构造方法,就是为了使用更灵活,只要传入对数就可以调用了:

public class MyCountTimer extends CountDownTimer {
public static final int TIME_COUNT = 121000;//时间防止从119s开始显示(以倒计时120s为例子)
private TextView btn;
private int endStrRid;
private int normalColor, timingColor;//未计时的文字颜色,计时期间的文字颜色

/**
* 参数 millisInFuture         倒计时总时间(如60S,120s等)
* 参数 countDownInterval    渐变时间(每次倒计1s)

        * 参数 btn               点击的按钮(因为Button是TextView子类,为了通用我的参数设置为TextView)

        * 参数 endStrRid   倒计时结束后,按钮对应显示的文字
*/
public MyCountTimer (long millisInFuture, long countDownInterval, TextView btn, int endStrRid) {
super(millisInFuture, countDownInterval);
this.btn = btn;
this.endStrRid = endStrRid;
}


/**

          *参数上面有注释
*/
public  MyCountTimer (TextView btn, int endStrRid) {
super(TIME_COUNT, 1000);
this.btn = btn;
this.endStrRid = endStrRid;
}

public MyCountTimer (TextView btn) {
super(TIME_COUNT, 1000);
this.btn = btn;
this.endStrRid = R.string.txt_getMsgCode_validate;
}


public MyCountTimer (TextView tv_varify, int normalColor, int timingColor) {
this(tv_varify);
this.normalColor = normalColor;
this.timingColor = timingColor;
}

// 计时完毕时触发
@Override
public void onFinish() {
if(normalColor > 0){
btn.setTextColor(normalColor);
}
btn.setText(endStrRid);
btn.setEnabled(true);
}

// 计时过程显示
@Override
public void onTick(long millisUntilFinished) {
if(timingColor > 0){
btn.setTextColor(timingColor);
}
btn.setEnabled(false);
btn.setText(millisUntilFinished / 1000 + "s");
}
}


然后在你要实现倒计时的页面用就可以了:

比如在AcvitityA中点击倒时间的按钮

Button smsBtn=findViewById(R.id.....);

 MyCountTimertimeCount = new MyCountTimer(smsBtn, 0xfff30008, 0xff969696);//传入了文字颜色值
timeCount.start();

如时你不传入颜色值的话,也可以在点击按钮smsBtn的布局文件中根据按钮状态来设置颜色。

 

<Button
            android:id="@+id/rebind_sms_btn"
            android:layout_width="120dp"
            android:layout_height="45dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:background="@null"
            android:gravity="center"
            android:text="获取短信验证码"
            android:textColor="@color/hkb_binder_phone_text_color"
            android:textSize="16sp" />



文字颜色对应的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="#969696"/>
    <item android:color="#f30008"/>

</selector>

转自 :http://www.open-open.com/code/view/1426335036826

Android倒计时(类似短信验证倒计时的实现)

布局
  • sinat_35670989
  • sinat_35670989
  • 2016年11月09日 14:06
  • 488

Android实现获取验证码的倒计时功能

在开发是经常会遇到获取短信验证码,然后获取验证码后需要等待1分钟倒计时,这段时间是不能再次发送短信请求的。 实现如下: CountDownTimerUtils.java package com.jac...
  • shineflowers
  • shineflowers
  • 2015年11月30日 14:31
  • 15893

通用代码:发送短信并显示倒计时

var wait =120; var setSecID = ""; function countDown() { wait = wait - 1; if (wait == 0) { ...
  • a497785609
  • a497785609
  • 2017年08月15日 11:07
  • 384

js,jq发送短信倒计时

javascript"> var wait=60; function time(o) {         if (wait == 0) {             o.removeAttribute(...
  • yanfangphp
  • yanfangphp
  • 2014年03月18日 17:03
  • 7807

短信验证码倒计时的实现

短信验证码倒计时的实现
  • huangyongf
  • huangyongf
  • 2016年08月24日 20:23
  • 516

获取短信按钮倒计时60秒

var countdown=60; function settime(obj) { if (countdown == 0) { obj.removeAttribute("...
  • u011447828
  • u011447828
  • 2015年12月29日 20:55
  • 1973

android实现登录发送短信验证码或者语音验证码以及一个倒计时的内部类

//获取验证码 private void requestForGetCode() { String mobile = etPhoneNumber.getText().toString().tr...
  • wangning13ji
  • wangning13ji
  • 2016年07月19日 16:02
  • 813

jQuery实现发送短信验证码后60秒倒计时

var countdown=60; function settime(obj) { if (countdown == 0) { obj.removeAttribute("...
  • crazy__qu
  • crazy__qu
  • 2017年06月15日 19:33
  • 600

获取短信验证码时的倒计时按钮实现

在Android中实现倒计时有多种方式,如使用传统的java方式Timer+TimerTask等,这里我们使用系统自带的类CountDownTimer。CountDownTimer内部使用的是Hand...
  • ruancoder
  • ruancoder
  • 2016年07月09日 13:25
  • 5065

PHP验证码实现与倒计时

分享知识 传递快乐。首先在你的HTML引入jQuery文件,直接看代码: 验证码: ...
  • xhaimail
  • xhaimail
  • 2015年07月08日 14:32
  • 1354
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安卓的短信倒计时实现
举报原因:
原因补充:

(最多只允许输入30个字)