使用CountDownTimer实现简单易用的倒计时按钮;
btn_time为Button控件;
如以下代码:
btn_time.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new MyCountDownTimer(60000, 1000).start();
}
});
class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
btn_time.setText("倒计时:" + millisUntilFinished / 1000 + "s");
btn_time.setClickable(false);
btn_time.setBackgroundColor(Color.GRAY);
}
/**
* Callback fired when the time is up.
*/
@Override
public void onFinish() {
btn_time.setText("获取验证码");
btn_time.setClickable(true);
btn_time.setBackgroundColor(Color.BLUE);
}
}
效果:
当点击按钮后,按钮颜色置灰,文字显示为"倒计时:60s"递减状且不可点击;
当到达设置的时间后,按钮的文字、颜色显示为原来的,可点击。