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