CountDownTimer由系统提供
查资料的时候 发现了CountDownTimer这个类之后 果断抛弃了以前的倒计时做法
功能:
30秒倒计时 每次间隔1秒
参数:
mc.start();方法开始
mc.cancel();方法结束
new MyCountDownTimer(30000, 1000); 第一个参数表示 总的时间为30000毫秒,间隔1000毫秒
直接上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
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
public
void
onTick(
long
millisUntilFinished) {
Log.i(
"MainActivity"
, millisUntilFinished +
""
);
tv.setText(
"倒计时("
+ millisUntilFinished /
1000
+
")..."
);
}
}
}
|