2015-12-04 2 views
0

я был использовать 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

я просто удивляюсь, как сделать ИНТ кд = 1 = 1 секунда тоже, так что кд = 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 секунд, но что-то действительно близко к нему

+0

спасибо, что это хорошо работает! – Ricci

0

В mHandler.postDelayed (mUpdateTimeTasks, cd); кд составляет миллисекунды

Вы должны изменить свой код от:

final Handler mHandler = new Handler(); 

конечных Runnable mUpdateTimeTasks = новый 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 сек) проверьте метод Runnable mUpdateTimeTasks.