Android获取短信验证码倒计时

目前越来越多的app在注册或是进行对应操作时,要求获取短信验证码,在点击了获取短信验证码的按钮后,就是出现倒计时,比如倒计时120S,在倒计时期间内,按钮点击是无效的,当倒计时结束后,如果你没有获取到验证码,可以再次点击。实现倒计时的方法很多,我们今天就通过继承android.os.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>

这样的效果是一样的。代码OK了,本人比较懒,就不贴出了!

时间: 2024-11-02 21:41:18

Android获取短信验证码倒计时的相关文章

android 获取短信验证码倒计时

public class MainActivity extends Activity { private Button submit; private TimeCount time; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentVi

android获取短信验证码并自动填写的实现一

android获取短信验证码并自动填写的实现一 android获取短信验证码并自动填写的实现一,有需要的朋友可以参考下. 现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> &l

Android获取短信验证码

Android开发中关于短息验证码的设计层出不穷,越来越多的应用为了更好的提高软件的安全性,开始使用通过服务器向用户发送验证码的方式,来保护用户个人信息的安全性.无论是用户注册时的信息验证还是当用户发出找回密码请求时的短信验证,他们的工作原理大致上是一致的,因为项目的需要研究了一下关于这方面的知识,本篇我将带领大家一起实现这一当下流行的设计方案. 众所周知,短信验证需要服务器端生成一个验证码,然后发送到用户输入的手机上,这个过程需要服务器主动向客户发送验证短信,所以这是就需要一个移动或联通的发送

js获取短信验证码倒计时重新发送的实现方法

<!-- 参数var wait=30;为等待时间30秒,可以根据自身实际情况来设置.当在等待时间内获取不到验证码,可以点击重新获取.--> <script type="text/javascript"> var wait=30; function changetime() { if (wait == 0) { $("#getphcode").attr("disabled","false"); $(&qu

js,JQ获取短信验证码倒计时

按钮 <a href="javasript:void(0);"onclick="settime(this);">获取手机验证码</a> 倒计时js <script> var countdown=60; function settime(obj) { if (countdown == 0) { obj.getAttributeNode('onclick').value ="settime(this);"; obj

获取短信验证码倒计时

<input type="button" id="btn" value="免费获取验证码" /> <script type="text/javascript"> var wait=60; function time(o) { if (wait == 0) { o.removeAttribute("disabled"); o.value="免费获取验证码"; wai

获取短信验证码倒计时代码实现

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="WM.MemberRegister.Web.Demo" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.

自动获取短信验证码并填充以及倒计时_Android源码

自动获取短信验证码并填充以及倒计时 自动获取短信验证码并填充以及倒计时 下载地址:http://www.devstore.cn/code/info/827.html 运行截图:

Android自动获取短信验证码

前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android上获取短信信息主要有BroadcastReceiver方式与数据库方式,要实时的话就BroadcastReceiver比较方便 public class SMSReceiver extends BroadcastReceiver{    private String verifyCode="&quo