在发送手机验证码等场景下如果用户点击了发送验证码则发送按钮需要改成倒计时按钮,以下代码就是针对这个场景的工具类,可以方便代码编写。
public class Counter extends CountDownTimer {
private Button verificationBtn;
private String nomalStirng ="获取验证码";
private String hintString ="秒后重新获取";
/**
* 设置正常显示的文字
* @param nomalStirng
*/
public void setNomalStirng(String nomalStirng) {
this.nomalStirng = nomalStirng;
}
/**
* 设置计时器中间提示显示的文字
* @param hintString
*/
public void setHintString(String hintString) {
this.hintString = hintString;
}
/**
* 计数器
* @param millisInFuture
* 计数器的总时间(单位毫秒)
* @param countDownInterval
* 计数器每次计数减少的时间(单位毫秒)
* @param verificationBtn
* 计数按钮,负责更新按钮的状态和文字效果
*/
public Counter(long millisInFuture, long countDownInterval,Button verificationBtn) {
super(millisInFuture, countDownInterval);
this.verificationBtn =verificationBtn;
}
@Override
public void onFinish() {
verificationBtn.setText(nomalStirng);
setBunttonEnabled(verificationBtn, true);
}
@Override
public void onTick(long millisUntilFinished) {
setBunttonEnabled(verificationBtn, false);
verificationBtn.setText("(" + millisUntilFinished / 1000 + ")"+hintString);
}
private void setBunttonEnabled(Button verificationBtn,boolean enable){
verificationBtn.setEnabled(enable);
verificationBtn.setClickable(enable);
}
}