项目中不可避免的要使用倒计时,之前会用之前一直使用Handler + Runnable来实现,但是自从发现CountDownTimer了后,
发现CountDownTimer挺好用
比如要做一个获取验证码的倒计时
新建CountDownTimerUtils 继承 CountDownTimer
重写 onTick()
这个是间隔时间内执行比如说设置1s执行一次 那么就1秒自己调用一次这个方法
onFinsh()
倒计时完成后调用
完整代码:
public class CountDownTimerUtils extends CountDownTimer { private TextView mTextView; /** * @param millisInFuture The number of millis in the future from the call * to {@link #start()} until the countdown is done and {@link #onFinish()} * is called. * @param countDownInterval The interval along the way to receive * {@link #onTick(long)} callbacks. */ public CountDownTimerUtils(TextView textView, long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); this.mTextView = textView; } @Override public void onTick(long millisUntilFinished) { mTextView.setClickable(false); //设置不可点击 // mTextView.setText("已发送( " + millisUntilFinished / 1000 + " )"); //设置倒计时时间 mTextView.setText("已发送"); mTextView.setBackgroundResource(R.drawable.shape_gray_solid_gray_stroke_garden); //设置按钮为灰色,这时是不能点击的 // mTextView.setTextColor(Color.WHITE); } @Override public void onFinish() { // mTextView.setText("重新获取验证码"); mTextView.setText("发送验证码"); mTextView.setClickable(true);//重新获得点击 mTextView.setBackgroundResource(R.drawable.shape_gray_stroke_white_stroke_garden); //还原背景色 } }