android 利用CountDownTimer实现验证码倒计时效果
我们在进行某些耗时操作时,一般都要设计一个进度条或者倒计时器,让进度可视化,告诉用户“等待之后更精彩”。在使用短信验证码注册或者登录App就可以看到这样的设计:点击“发送验证码”的按钮之后,按钮上就会出现倒计时(一般为60秒),倒计时结束之后,按钮的文字就会变成“重新发送”。
在Android中要实现这样的效果可以使用Handler发送消息,但其实还有一个已经封装好的抽象类可以帮上忙,那就是CountDownTimer,利用它,我们可以很轻松地实现倒计时。
首先先看效果图如下:
首先来看代码,布局为一个Button按钮(略过),来看MainActivity代码:
private CountDownTimer downTimer;//倒计时类
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_phone, container, false);
initView(inflate);
return inflate;
}
downTimer = new CountDownTimer(60000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
btn_getyanzhengma.setClickable(false);//防止重复点击,可避免多次点击后冲突事件
btn_getyanzhengma.setText(millisUntilFinished / 1000 + "秒后重新发送");
}
@Override
public void onFinish() {
btn_getyanzhengma.setText("发送验证码");
btn_getyanzhengma.setClickable(true);
}
}.start();