自定义N秒倒计时

我自己写的源码:
import android.os.Message;

import java.util.Timer;
import java.util.TimerTask;


public class TimeCountDown extends android.os.Handler{
    private boolean timerIsRunning = false;//计时器是否正在计时
    private int totalTime = 60;//需要倒计时的时间
    private int initTime = 60;//初始设置时间
    private final int END = 1;
    private final int RUNNING = 2;
    private Timer timer = new Timer();
    private TimeCountListener timeCountListener;

    public TimeCountDown(int countDownTime, TimeCountListener timeCountListener){
        this.timeCountListener = timeCountListener;
        this.initTime = countDownTime;
        this.totalTime  = countDownTime;
    }
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case END:
                if(timeCountListener != null){
                    timeCountListener.onTimeCountFinish();
                }
                break;
            case RUNNING:
                if(timeCountListener != null){
                    timeCountListener.onTimeCountRunning(totalTime);
                }
                break;
            default:
                break;
        }

    }

    /**
     * 停止计时
     */
    public void stopTimeCount(){
        if(timerIsRunning && timer!=null) {
            totalTime = initTime;//代表结束
            timerIsRunning = false;
            TimeCountDown.this.sendEmptyMessage(END);
            timer.cancel();
        }
    }

    public void start(){
        if(!timerIsRunning){
            timerIsRunning = true;
            timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    if (totalTime <= 0) {
                        totalTime = initTime;//代表结束
                        timerIsRunning = false;
                        TimeCountDown.this.sendEmptyMessage(END);
                        timer.cancel();
                        return;
                    }
                    //否则继续计时
                    TimeCountDown.this.sendEmptyMessage(RUNNING);
                    totalTime = totalTime - 1;
                }
            }, 0, 1000);
        }
    }
       /**
         * 计时接口
         */
        public interface TimeCountListener{
            public void onTimeCountFinish() ;//计时结束
            public void onTimeCountRunning(long millisUntilFinished);//正在计时
        }

    }

代码中使用:

TimeCountDown timeCount= new TimeCountDown(10,new TimeCountDown.TimeCountListener() {
    @Override
    public void onTimeCountFinish() {
        tvVersionCode.setText("end");
    }

    @Override
    public void onTimeCountRunning(long millisUntilFinished) {
        tvVersionCode.setText(""+millisUntilFinished);
    }
});
开始计时:
timeCount.start();
停止计时:
 
  
timeCount.stopTimeCount();


 
  



顺便打个广告

腾讯视频会员,搜狐会员账号长期供货,比官网价钱低,稳定不掉线,需要的可以加qq:1059876295



你可能感兴趣的:(自定义N秒倒计时)