//——————————————————-第一种 Handler——————————————————————-
1.private Handler handler = new Handler() {}
2.
//倒计时
Runnable runnable = new Runnable() {
@Override
public void run() {
in--;
if (in > 0) {
mZhuCeHuoQu.setBackgroundColor(Color.parseColor("#c68a8a"));
mZhuCeHuoQu.setEnabled(false);
mZhuCeHuoQu.setText("倒计时" + in + "秒");
handler.postDelayed(runnable, 1000);
} else {
mZhuCeHuoQu.setText("点击获取手机验证码");
mZhuCeHuoQu.setBackgroundColor(Color.parseColor("#b9b9b9"));
mZhuCeHuoQu.setEnabled(true);
handler.removeCallbacks(runnable);
in = 60;
}
}
};
//结束这个handler的方法
handler.removeCallbacks(runnable);
3.调用
handler.post(runnable);
//————————————第二种 简单方式,CountDownTimer———————————————
//这个东西在代码里直接new 出来就可以了
new CountDownTimer(60000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mZhuCeHuoQu.setBackgroundColor(Color.parseColor("#c68a8a"));
mZhuCeHuoQu.setEnabled(false);
mZhuCeHuoQu.setText("倒计时" + (millisUntilFinished / 1000) + "秒");
}
@Override
public void onFinish() {
mZhuCeHuoQu.setText("点击获取手机验证码");
mZhuCeHuoQu.setBackgroundColor(Color.parseColor("#b9b9b9"));
mZhuCeHuoQu.setEnabled(true);
}
}.start();
//结束这个倒计时的方法
timer.cancel();
//最好判断一下为不为空再结束倒计时,不然有时候会出错
if (timer!=null){
timer.cancel();
}
//如果你要结束当前页面,但是倒计时它还走着,那么你需要在onDestroy里结束它,不然报错,同样handler也一样。
@Override
protected void onDestroy() {
super.onDestroy();
if (timer!=null){
timer.cancel();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118359.html