Android中實現倒計時的幾種方式

zqm112112 8年前發布 | 13K 次閱讀 安卓開發 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(); }</code></pre>

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

 

 本文由用戶 zqm112112 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!