首页 > 代码精文 > Android > Android中实现倒计时的几种方式
2016
11-22

Android中实现倒计时的几种方式

 

1、使用CountDownTimer

private void fun1(){
    final CountDownTimer countDownTimer = new CountDownTimer(60000,1000) {
        @Override
        public void onTick(long l) {
            //倒计时每秒的回调
            mainBinding.tvUp.setText(l/1000+"");
        }
        @Override
        public void onFinish() {
            //倒计时结束
        }
    };
    countDownTimer.start();
}

2、使用 Handler + Thread

private boolean isOk = true;
private int time = 59;
private Handler handler = new Handler(){
    public void handleMessage(android.os.Message msg) {
        if(msg.what == 0){
            mainBinding.tvDown.setText("" + time);
            time--;
            if(time<=0){
                isOk = false;
            }
        }
    };
};


private void fun2(){
    new Thread(){
        @Override
        public void run() {
            while(isOk){
                try {
                    Thread.sleep(1000);
                    handler.sendEmptyMessage(0);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }.start();
}

3、使用属性动画(经过对比,发现属性动画倒计时不准确)

private void fun2(){
        ValueAnimator valueAnimator = ValueAnimator.ofInt(60000,0);
        valueAnimator.setDuration(60000);
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                int value = (int)(valueAnimator.getAnimatedValue());
                mainBinding.tvMiddle.setText(value/1000+"");
            }
        });
        valueAnimator.start();
    }

来自:http://www.jianshu.com/p/137f24f0c43c

最后编辑:
作者:小企鹅
坚持+积累+学习
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!

Android中实现倒计时的几种方式》有 1 条评论

  1. 小企鹅 说:

    第二个方法其实直接用handler的postDelay,不需要线程。

留下一个回复