-
Notifications
You must be signed in to change notification settings - Fork 34
/
CountdownUtil.java
153 lines (135 loc) · 3.32 KB
/
CountdownUtil.java
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package com.liyi.sutils.utils.time;
import android.os.CountDownTimer;
/**
* 倒计时工具类
*/
public class CountdownUtil {
/* 倒计时的间隔时间 */
private int mIntervalTime;
/* 倒计时的总时间 */
private int mTotalTime;
/* 倒计时是否在运行 */
private boolean isRunning;
/* 系统倒计时类 */
private CountDownTimer mTimer;
/* 倒计时监听器 */
private OnCountdownListener mCountdownListener;
private CountdownUtil() {
super();
this.mIntervalTime = 0;
this.mTotalTime = 0;
this.isRunning = false;
}
public static CountdownUtil newInstance() {
return new CountdownUtil();
}
private void init() {
mTimer = new CountDownTimer(mTotalTime, mIntervalTime) {
@Override
public void onTick(long millisUntilFinished) {
if (mCountdownListener != null) {
mCountdownListener.onRemain(millisUntilFinished);
}
}
@Override
public void onFinish() {
isRunning = false;
if (mCountdownListener != null) {
mCountdownListener.onFinish();
}
}
};
}
/**
* 设置倒计时的间隔时间
*
* @param intervalTime 间隔时间
* @return {@link CountdownUtil}
*/
public CountdownUtil intervalTime(int intervalTime) {
this.mIntervalTime = intervalTime;
return this;
}
/**
* 设置倒计时的总时间
*
* @param totalTime 总时间
* @return {@link CountdownUtil}
*/
public CountdownUtil totalTime(int totalTime) {
this.mTotalTime = totalTime;
return this;
}
/**
* 设置倒计时监听器
*
* @param listener 倒计时监听器
* @return {@link CountdownUtil}
*/
public CountdownUtil callback(OnCountdownListener listener) {
this.mCountdownListener = listener;
return this;
}
/**
* 开始倒计时
*/
public void start() {
if (mTimer == null) init();
mTimer.start();
isRunning = true;
}
/**
* 结束倒计时
*/
public void stop() {
if (mTimer != null) mTimer.cancel();
isRunning = false;
}
/**
* 获取倒计时的间隔时间
*
* @return 间隔时间
*/
public int getIntervalTime() {
return mIntervalTime;
}
/**
* 获取倒计时的总时间
*
* @return 总时间
*/
public int getTotalTime() {
return mTotalTime;
}
/**
* 获取倒计时是否正在进行
*
* @return {@code true}: 正在进行<br>{@code false}: 已经结束
*/
public boolean isRunning() {
return isRunning;
}
/**
* 获取倒计时类
*
* @return {@link CountDownTimer}
*/
public CountDownTimer getTimer() {
return mTimer;
}
/**
* 倒计时监听器
*/
public interface OnCountdownListener {
/**
* 倒计时正在进行时调用的方法
*
* @param millisUntilFinished 剩余的时间(毫秒)
*/
void onRemain(long millisUntilFinished);
/**
* 倒计时结束
*/
void onFinish();
}
}