1.首先要写一个倒计时类-Android笔记之倒计时CountDownTimer抽象类
CountDownTimer类的使用很简单,这是一个android.os包下面的抽象类,其构造方法需要传入两个值,第一个参数是你需要倒计时的总时间,单位为毫秒,第二个值为计时变化依据的间隔时间,单位为毫秒.以下是CountDownTimer的构造方法
//构造方法
public CountDownTimer(long millisInFuture, long countDownInterval) {
mMillisInFuture = millisInFuture;
mCountdownInterval = countDownInterval;
}
有两个方法必须要重写,而且两个方法都是在UI线程中执行的,不用担心子线程无法更新UI的问题:
onTick(long millisUntilFinished)
每隔设定的间隔时间就会执行此方法,millisUntilFinished为剩余的毫秒值,根据你设置的两个参数值决定的
倒计时结束执行的回调方法
2.代码:倒计时类CountDownTimerUtils.java
package com.example.myapp.Baseactivity;
import android.graphics.Color;
import android.os.CountDownTimer;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.widget.Button;
import com.example.myapp.R;
public class CountDownTimerUtils extends CountDownTimer {
private Button mButton;
public CountDownTimerUtils(Button button,long millisInFuture, long countDownInterval) {//控件,定时总时间,间隔时间
super(millisInFuture, countDownInterval);
this.mButton=button;
}
@Override
public void onTick(long millisUntilFinished) {
mButton.setClickable(false);//设置不可点击
mButton.setText(millisUntilFinished/1000+"秒后可重新发送");//设置倒计时时间
/* SpannableString spannableString=new SpannableString(bt_getcord.getText().toString());//获取按钮上的文字
ForegroundColorSpan span=new ForegroundColorSpan(Color.RED);//设置文字颜色
bt_getcord.setAllCaps(false);
spannableString.setSpan(span,0,2,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);////将倒计时的时间设置为红色
bt_getcord.setText(spannableString);*/
}
@Override
public void onFinish() {
mButton.setClickable(true);//重新获得点击
mButton.setText("重新获取验证码");
}
}
在登陆界面调用这个类就可以倒计时了,填写三句话
第一句:定义类与变量
第二句:创建对象
第三句:点击获取验证码btn_getcord时,就开始倒计时了
最后的结果: