我们在开发的时候有时候需要倒计时的功能有时候需要一个计时器一样的功能。我们大多数会写for循环累加然后写在线程中,这样写很麻烦,也很容易出错。今天我介绍一下这样的功能在Android中其实已经有封装了。
CountDownTimer 这个类是位于Android.OS包下。实现这个类中的三个方法就很容易实现倒计时的功能了。
下面是代码
这段代码实现了发送短信时的倒计时功能。
public class TimeCount extends CountDownTimer{
public TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
// TODO Auto-generated constructor stub
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
yanzhengma.setText("获取验证码");
yanzhengma.setClickable(true);
}
@Override
public void onTick(long arg0) {
// TODO Auto-generated method stub
yanzhengma.setClickable(false);
yanzhengma.setText(arg0/1000+"s");
}
}
下面在介绍一个计时器的组件
<Chronometer android:layout_weight="1"
android:layout_width="0dip"
android:text="0:0:0"
android:format="%s"
android:textSize="50dp"
android:gravity="center_vertical"
android:layout_height="100dip"
android:id="@+id/jishiqi"/>
format的意思
格式化字符串:如果指定,计时器将根据这个字符串来显示,替换字符串中第一个“%s”为当前"MM:SS"或"H:MM:SS"格式的时间显示。如果不指定,计时器将简单的显示"MM:SS"
or "H:MM:SS"格式的时间。
timer.setBase(SystemClock.elapsedRealtime()); 设置基准时间,SystemClock.elapsedRealtime()即表示从当前时间开始重新计时
timer.start();开始计时
timer.stop()停止计时