2015-09-18 2 views
2

Итак, у меня есть приложение Quiz App и есть таймер. Так что я хочу, например, я установил таймер на 15 секунд, и если пользователь ответит на вопрос через 5 секунд, я хочу, чтобы 10-секундное разрастание стало 10 очками, и это добавит к предыдущему баллу плюс счет, который вы получите отвечая на вопросы. поэтому на данный момент у меня есть это ...Получите оставшееся время на CountdownTimer и используйте оставшееся время как счет андроида

 if(savedInstanceState!=null){ 
     //saved instance state data 
     int exScore = savedInstanceState.getInt("score"); 
     scoreText.setText("Score: "+exScore); 
    } 

    Timer = new CountDownTimer(15000, 1000) { 
     @Override 
     public void onTick(long millisUntilFinished) { 
      tv_time.setText("" + millisUntilFinished/1000); 
      int progress = (int) (millisUntilFinished/150); 
      progressBar.setProgress(progress); 

     } 

     @Override 
     public void onFinish() { 
      progressBar.setProgress(0); 
      timeUp(context); 

     } 
    }.start(); 

и вот один для onclick. если ответ пользователь правильно это добавит 10points автоматически

public void onClick(View view) { 
     Button clicked = (Button) view; 
     int exScore = getScore(); 

    if (clicked.getText().toString().equals(this.active_question.getAnswer())) { 
     if (this.questions.size() > 0) { 
        setQuestion(questions.poll()); 
        scoreText.setText("Score: " + (exScore + 10)) 


    } else { 
     CustomGameOver cdd = new CustomGameOver(PlayQuizActivity.this); 
     cdd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
     cdd.show(); 
     setHighScore(); 


     Timer.cancel(); 
     } 

} 

Я не имею ни малейшего представления о том, как получить время remaianing на CountdownTimer и добавить его в баллах, когда ответ является правильным. может кто-нибудь, пожалуйста, помогите мне, пожалуйста.

ответ

3

Просто используйте millisUntilFinished из OnTick в CountDownTimer

И бонус будет millisUntilFinished/1000

P.S Я думаю, вам лучше использовать меньший интервал, чем 1000, так что ProgressBar будет казаться более гладкой.

+0

Большое спасибо!. –

0

Все, что вам нужно сделать, это объявить длинную переменную timeleft в вашем MainActivity.

long timeleft; 

Затем, когда вы создаете новый таймер, установите «OnTick» переопределение обновить TimeLeft переменного каждый «OnTick» (который в следующем примере составляет 1000 миллисекунд)

timer = new CountDownTimer(time, 1000) { 
     @Override 
     public void onTick(long millisecondsUntilFinished) { 
      timeleft = millisecondsUntilFinished; 
     } 
     } 

Вашего приложения может получить доступ к переменной timeleft каждый раз, когда вам нужно проверить, сколько осталось времени.

score = score + timeleft/1000; // divide by 1000 to get seconds 

Имейте в виду, что если вам нужно обновить таймер, вы должны отменить его и создать новый таймер с обновленным оставшееся время (и тот же переопределение);

 timeleft = timeleft + bonustime; // (if you want to add bonus time, remember has to be in milliseconds) 
     if(timer != null){ timer.cancel();} // better check first if the timer exists 
     timer = new CountDownTimer(timeleft, 1000) { 
      @Override 
      public void onTick(long millisecondsUntilFinished) { 
       timeleft = millisecondsUntilFinished; 
      }