采用条形进度条,上方有10分钟倒计时
系统默认进度条形状圆形,在xml文件中设置
android:visibility="visible"//设置可见
style="@android:style/Widget.ProgressBar.Horizontal"//条形
倒计时的话推荐我在github上偷的utils,贼好用
//主要部分
package test.bird.starrysky_sudoku;
import android.os.CountDownTimer;
/**
* created 2017/5/16 11:32
*/
public class CountDownTimerSupport implements ITimerSupport {
private final long DEFAULT_MILLIS_FUTURE = 60000;
private final long DEFAULT_COUNT_DOWN_INTERVAL = 1000;
private CountDownTimer mTimer;
/**
* 倒计时时间
*/
private long mMillisInFuture = DEFAULT_MILLIS_FUTURE;
/**
* 间隔时间
*/
private long mCountDownInterval = DEFAULT_COUNT_DOWN_INTERVAL;
/**
* 倒计时剩余时间
*/
private long mMillisUntilFinished;
private OnCountDownTimerListener mOnCountDownTimerListener;
private TimerState mTimerState = TimerState.FINISH;
public CountDownTimerSupport() {
}
public CountDownTimerSupport(long millisInFuture, long countDownInterval) {
this.mMillisInFuture = millisInFuture;
this.mCountDownInterval = countDownInterval;
}
@Override
public void start() {
if (mTimerState != TimerState.START) {
if (mTimer == null) {
reset();
}
mTimer.start();
mTimerState = TimerState.START;
}
}
@Override
public void pause() {
if (mTimer != null && mTimerState == TimerState.START) {
mTimer.cancel();
mTimer = null;
mTimerState = TimerState.PAUSE;
}
}
@Override
public void resume() {
if (mTimerState == TimerState.PAUSE) {
mTimer = createCountDownTimer(mMillisUntilFinished, mCountDownInterval);
mTimer.start();
mTimerState = TimerState.START;
}
}
@Override
public void stop() {
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
mMillisUntilFinished = 0;
mTimerState = TimerState.FINISH;
}
}
@Override
public void reset() {
stop();
mTimer = createCountDownTimer(mMillisInFuture, mCountDownInterval);
}
public boolean isStart() {
return mTimerState == TimerState.START;
}
public boolean isFinish() {
return mTimerState == TimerState.FINISH;
}
protected CountDownTimer createCountDownTimer(long millisInFuture, long countDownInterval) {
return new CountDownTimer(millisInFuture, countDownInterval) {
@Override
public void onTick(long millisUntilFinished) {
mMillisUntilFinished = millisUntilFinished;
if (mOnCountDownTimerListener != null) {
mOnCountDownTimerListener.onTick(mMillisUntilFinished);
}
}
@Override
public void onFinish() {
if (mOnCountDownTimerListener != null) {
mOnCountDownTimerListener.onFinish();
}
}
};
}
public void setMillisInFuture(long millisInFuture) {
this.mMillisInFuture = millisInFuture;
}
public void setCountDownInterval(long countDownInterval) {
this.mCountDownInterval = countDownInterval;
}
public void setOnCountDownTimerListener(OnCountDownTimerListener listener) {
this.mOnCountDownTimerListener = listener;
}
public long getMillisUntilFinished() {
return mMillisUntilFinished;
}
public TimerState getTimerState() {
return mTimerState;
}
}
//接口1
package test.bird.starrysky_sudoku;
/**
* author dengyuhan
* created 2017/5/16 11:33
*/
public interface ITimerSupport {
void start();
void pause();
void resume();
void stop();
void reset();
}
//接口2
package test.bird.starrysky_sudoku;
/**
* 倒计时监听
* author dengyuhan
* created 2017/5/16 11:42
*/
public interface OnCountDownTimerListener{
void onTick(long millisUntilFinished);
void onFinish();
}
//枚举状态
package test.bird.starrysky_sudoku;
/**
* author dengyuhan
* created 2017/5/16 13:28
*/
public enum TimerState {
START,PAUSE,FINISH
}
接下来就好办了,实例化,调用
public void setTime(){
mTimer = new CountDownTimerSupport();
mTimer.setMillisInFuture( 10 * 60 * 1000);//总时长
mTimer.setCountDownInterval(1000);//时间间隔
mTimer.setOnCountDownTimerListener(new OnCountDownTimerListener() {
@Override
public void onTick(long millisUntilFinished) {
finishTime = millisUntilFinished ;
String str2 = String.valueOf(((millisUntilFinished/1000) % 60));
if (((millisUntilFinished/1000) % 60)<10){
str2 = "0"+(millisUntilFinished/1000) % 60;//设置10秒之后的显示形式09
}
timecount.setText((millisUntilFinished/60/1000) + ":" + str2);
//时间显示出来
pb.setProgress((int) millisUntilFinished/100/60);
}
@Override
public void onFinish() {
timecount.setText((0+":" + "00"));
pb.setProgress(0);//设置进度条
dialogShow(lostDialog);//显示失败的dialog
}
});
mTimer.start();//别忘了开始
}