我们在编程的时候,经常会用到倒计时这个功能,本文主要是用Android封装好的CountDownTimer做倒计时的功能。
基本代码如下:
界面布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="60:00" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/start"
android:text="开始"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/end"
android:text="归零"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/restart"
android:text="重置"/>
</LinearLayout>
界面功能代码:
public class MainActivity extends Activity {
private TextView textView;
private MyCountDownTimer mc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.text1);
textView.setText("60:00");
findViewById(R.id.start).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mc==null) {
mc = new MyCountDownTimer(60000, 500);
mc.start();
}
}
});
findViewById(R.id.end).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mc!=null){
mc.cancel();
mc=null;
textView.setText("00:00");
}
}
});
findViewById(R.id.restart).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mc!=null){
mc.cancel();
mc=null;
}
mc=new MyCountDownTimer(60000,500);
mc.start();
}
});
}
/**
* 继承 CountDownTimer 防范
*
* 重写 父类的方法 onTick() 、 onFinish()
*/
public class MyCountDownTimer extends CountDownTimer {
/**
*
* @param millisInFuture
* 表示以毫秒为单位 倒计时的总数
*
* 例如 millisInFuture=1000 表示1秒
*
* @param countDownInterval
* 表示 间隔 多少微秒 调用一次 onTick 方法
*
* 例如: countDownInterval =1000 ; 表示每1000毫秒调用一次onTick()
*
*/
public MyCountDownTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
textView.setText("done");
}
@Override
public void onTick(long millisUntilFinished) {
textView.setText("" + millisUntilFinished / 1000 +":"+(millisUntilFinished % 1000)/10+ "");
}
}
}