欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android获取短信验证码倒计时,android短信验证码,目前越来越多的app在注

来源: javaer 分享于  点击 38669 次 点评:71

Android获取短信验证码倒计时,android短信验证码,目前越来越多的app在注


目前越来越多的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;}// 计时完毕时触发@Overridepublic void onFinish() {if(normalColor > 0){btn.setTextColor(normalColor);}btn.setText(endStrRid);btn.setEnabled(true);}// 计时过程显示@Overridepublic 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>
相关栏目:

用户点评