您的位置:首页 > 其它

CountDownTimer倒计时

2015-11-25 13:45 302 查看
CountDownTimer由系统提供

查资料的时候 发现了CountDownTimer这个类之后 果断抛弃了以前的倒计时做法

功能:

30秒倒计时 每次间隔1秒

参数:

mc.start();方法开始

mc.cancel();方法结束

new MyCountDownTimer(30000, 1000); 第一个参数表示 总的时间为30000毫秒,间隔1000毫秒

package com.example.daojishi;

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

/**
*
* @author baozi
*
* 倒计时的类 CountDownTimer
*
*/
public class MainActivity extends Activity {

private MyCountDownTimer mc;
private TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.show);
mc = new MyCountDownTimer(30000, 1000);
mc.start();
}

public void oncancel(View view) {
Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_LONG).show();// toast有显示时间延迟
mc.cancel();
}

public void restart(View view) {
Toast.makeText(MainActivity.this, "重新开始", Toast.LENGTH_LONG).show();// toast有显示时间延迟
mc.start();
}

/**
* 继承 CountDownTimer 防范
*
* 重写 父类的方法 onTick() 、 onFinish()
*/

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() {
tv.setText("done");
}
@Override
protected void onDestroy() {
super.onDestroy();
mc.cancel();
}

@Override
public void onTick(long millisUntilFinished) {
Date date = new Date(millisUntilFinished);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String str = sdf.format(date);
System.out.println(str);
tv.setText("倒计时(" + millisUntilFinished / 1000 + ")...");
}
}
}


MyCountDownTimer timer = new MyCountDownTimer(10000, 1000)中,第一个参数表示总时间,第二个参数表示间隔时间。意思就是每隔一秒会回调一次方法onTick,然后10秒之后会回调onFinish方法。在onDestory()方法中取消计时器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: