在软件开发中,我们经常要做一些倒计时执行指定代码的功能。比如发送短信验证码,当用户第一次点击获取验证码按钮后,我们一般会做一个倒计时,比如60秒,限制60秒内用户不能重新获取验证码,这样可以防止用户乱按,乱获取验证码,消耗短信接口的费用。今天,我们就来实现这样的一个功能。
先来看一下效果图。
我们实现的功能是,当点击按钮时,在按钮上显示倒计时秒数,然后倒计时完成后,在按钮上显示倒计时完成的提示。
实现这个功能其实很简单,只要用到一个CountDownTimer类。下面我们直接上源码。
final Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CountDownTimer countDownTimer = new CountDownTimer(30000, 1000) { @Override public void onTick(long millisUntilFinished) { button.setText("倒计时:" + millisUntilFinished / 1000 + "秒"); } @Override public void onFinish() { button.setText("倒计时完成!"); } }.start(); //取消倒计时可以调用cancel()方法 //countDownTimer.cancel(); } });
在new CountDownTimer(30000, 1000)中,第一个参数30000表示总共要倒计时的毫秒数,注意,单位是毫秒。这里的30000表示30秒(1秒 = 1000毫秒)。第二个参数1000表示倒计时间隔(实际应该不是这么叫的),表示的是每隔1秒计数一次。
onTick(long millisUntilFinished)
这个onTick方法,就是表示每隔上面的1秒触发一次的事件。millisUntilFinished表示剩余的倒计时毫秒数。我们这里除以1000即可得到剩余的秒数。
onFinish()
此方法在整个倒计时任务完成时触发。
我们上面的事例很简单,大家只要稍加修改一下,就可以改成非常实用的功能。
ok
mjj通道