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时,就开始倒计时了
最后的结果: