如何设置倒计时时间格式

时间:2015-12-04 13:31:01

标签: java android handler runnable countdowntimer

我使用runnable()在我的游戏上制作倒数计时器

我被设置为int cd=30;

这是运行它的方法

final Handler mHandler = new Handler();

final Runnable mUpdateTimeTasks = new Runnable() {

    public void run() {
        countdowntext.setText(String.valueOf(cd));
        cd -=1;
        if(cd < 10) {
            countdowntext.setTextColor(Color.RED);
        }
        if(cd == 0) {
           focus.stop();                                      
        }
    };
    // run this in a method.
    mHandler.postDelayed(mUpdateTimeTasks, cd);
}

代码工作正常,但问题只是coundown计时器运行如此之快,我只是想知道如何使int cd = 1 = 1秒,所以cd = 30 = 30秒

谁能帮助我吗?

2 个答案:

答案 0 :(得分:2)

  

我只是想知道如何使int cd = 1 = 1秒,所以cd = 30 = 30   第二

然后你应该使用mHandler.postDelayed(mUpdateTimeTasks, 1000)

final Runnable mUpdateTimeTasks = new Runnable() {
      public void run() {
           countdowntext.setText(String.valueOf(cd));
           cd -=1;
           if(cd < 10) {
                countdowntext.setTextColor(Color.RED);
           }
           if(cd == 0) { 
                focus.stop();        
                mHandler.removaCallbacks(null);
                return;                   
           }
           mHandler.postDelayed(this, 1000)
};

这不会给出正好30秒但是真正接近它的东西

答案 1 :(得分:0)

  

mHandler.postDelayed(mUpdateTimeTasks,cd); cd是毫秒

您应该更改以下代码:

final Handler mHandler = new Handler();

final Runnable mUpdateTimeTasks = new Runnable(){

public void run() {
    countdowntext.setText(String.valueOf(cd));
    cd -=1;
    if(cd < 10) {
        countdowntext.setTextColor(Color.RED);
    }
    if(cd == 0) {
       focus.stop();                                      
    }
};
// run this in a method.
mHandler.postDelayed(mUpdateTimeTasks, cd);
 }

对此:

    final Handler mHandler = new Handler();

final Runnable mUpdateTimeTasks = new Runnable() {

    public void run() {
        countdowntext.setText(String.valueOf(cd));
        cd -=1;
        if(cd < 10) {
            countdowntext.setTextColor(Color.RED);
        }
        if(cd == 0) {
           focus.stop();    
           mHandler.removaCallbacks(null);  
           return();                                
        }
    };
    // run this in a method.
    mHandler.postDelayed(mUpdateTimeTasks, 1000);
    }

1000 表示在一秒钟后(1000/1000秒)检查 Runnable mUpdateTimeTasks 方法。