2015-03-13 3 views
0

В настоящее время я разрабатываю игру для Android, и в игре есть таймер для матча, который я реализовал с помощью countDownTimer. Проблема в том, что мой таймер уменьшается, как в миллисекундах, и я хотел, чтобы это было каждую секунду. Кстати, мой планшет кажется очень быстрым, но я не знаю, если это проблема. Я не знаю, что случилось с кодом, но здесь это:CountdownTimer не ждет 1 секунду?

this.timerFimDeJogo = new CountDownTimer(mSecondsLeft * 1000, 1000) { 

     public void onTick(long millisUntilFinished) { 
      --mSecondsLeft; 
      if(mSecondsLeft == 10) 
      { 
       //pouco tempo para acabar? add animação no timer! 
       final Animation animScale = AnimationUtils.loadAnimation(TelaModoCompeticao.this, R.anim.anim_scale_clock); 
       TextView viewTimer = (TextView) findViewById(R.id.countdown); 
       viewTimer.setTextColor(Color.RED); 
       viewTimer.startAnimation(animScale); 

      } 
      String tempoAtual = String.format("%02d:%02d", 
        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished), 
        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)) 
       ); 

      // update countdown 
      ((TextView) findViewById(R.id.countdown)).setText(tempoAtual); 
     } 

     public void onFinish() { 
      if(jogoJahTerminou == false) 
      { 
       // finish game 
       mandarMensagemMultiplayer("terminouJogo;"); 
       ProgressDialog barraProgressoFinalTerminouJogo = ProgressDialog.show(TelaModoCompeticao.this, getResources().getString(R.string.aviso_tempo_acaboou), getResources().getString(R.string.por_favor_aguarde)); 
       TerminaPartidaTask taskTerminaPartida = new TerminaPartidaTask(barraProgressoFinalTerminouJogo, TelaModoCompeticao.this); 
       taskTerminaPartida.execute(""); 
      } 

     } 
    }.start(); 
+0

Я не совсем понимаю вашу проблему. вы говорите, что onTicks не происходят в нужное время? –

+0

Если его тикание каждые миллисекунды умножает значение, которое вы даете ему на 1000. – MeetTitan

ответ

0

Если я не ошибаюсь попробовать это ...

public class MyCount extends CountDownTimer { 

    public MyCount(long millisUntilFinished, long countDownInterval) { 
     super(millisUntilFinished, countDownInterval); 
     onTick(millisUntilFinished); 
    } 

    public void onTick(long millisUntilFinished) { 
     String time = formatTime(millisUntilFinished); 
     Log.d("TIME","Remaining Time " + time); 
    } 

    public void onFinish() { 
     Log.d("TIME","Time Over"); 
    } 
} 

// method for formatted time---------- 
public String formatTime(long millis) { 
    String output = "00:00"; 
    long seconds = millis/1000; 
    long minutes = seconds/60; 

    seconds = seconds % 60; 
    minutes = minutes % 60; 

    String sec = String.valueOf(seconds); 
    String min = String.valueOf(minutes); 

    if (seconds < 10) 
     sec = "0" + seconds; 
    if (minutes < 10) 
     min = "0" + minutes; 

    output = min + " : " + sec; 
    return output; 
} 

и

MyCount count = new MyCount(selected_time * 60 * 1000, 1000); 
    count.start(); 

надежда это помогает :)

Смежные вопросы