一、概述
项目中经常用到倒计时的功能:手机获取验证码。google官方也帮我们封装好了一个类:CountDownTimer,使我们的开发更加方便;
CountDownTimer是一个抽象类,有两个抽象方法,
1、public abstract void onTick(long millisUntilFinished);//这个是每次间隔指定时间的回调,millisUntilFinished:剩余的时间,单位毫秒
2、public abstract void onFinish();//这个是倒计时结束的回调
使用的时候只需要
new CountDownTimer(long millisInFuture, long countDownInterval)
//millisInFuture:倒计时的总时长
//countDownInterval:每次的间隔时间 单位都是毫秒
三、基本使用方法
我们以短信验证码的倒计时来看,点击获取验证码,倒计时60s不可点击
点击按钮,获取验证码成功之后就可以执行以上操作,最后一定要start,不然不会执行
以按钮为例实现手机获取验证码举例:
xml文件设置一个布局RelativeLayout
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_parent"
android:layout_marginTop="20dp"
android:layout_toLeftOf="@+id/btn" />
<Button
android:id="@+id/btn"
android:layout_width="100dp"
android:layout_height="wrap_parent"
android:layout_marginTop="20dp"
android:layout_alignParentRight="true"
android:text="获取验证码" />
.java文件
public class MainActivity extends Activity{
private Button mButtonClick;
private TimerCount mTimerCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonClick = (Button ) findViewById(R.id.btn);
mTimerCount = new TimerCount (60 * 1000 , 1000);
mButtonClick .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mTimerCount.start();
}
});
}
class TimerCount extends CountDownTimer(){ //抽象类
//构造方法
public TimerCount (long totalTime, long interval){
super(totalTime,interval);
}
@Override //覆写方法 - 结束方法
public void onFinish() {
mButtonClick .setEnable(true);
mButtonClick .setText("重新获取");
}
@Override //覆写方法 - 计时方法
public void onTick(long millisUntilFinished) {
mButtonClick .setEnable(false);
mButtonClick .setText(millisUntilFinished / 1000 + "秒");
}
}
}
网友评论