ProgressBar с отметкой времени в миллис - PullRequest
0 голосов
/ 30 июня 2019

Мне нужен индикатор выполнения с интервалом из двух значений отметки времени в миллисекундах.

Например, у меня есть отметка времени 08:46:11 30.06.2019 и 10:46:11 30.06.2019.Но текущее время - 09:46:11 30.06.2019, так что теперь прогрессбар должен быть заполнен на 50% и увеличиваться до 100 до 10:46:11 30.06.2019.

Итак, я попробовал следующий код:

private void progressBar(){
            prBar.setProgress(i);
            mCountDownTimer=new CountDownTimer(ltimestampStop * 1000,ltimestampStart * 1000) {

                @Override
                public void onTick(long millisUntilFinished) {
                    Log.v("Log_tag", "Tick of Progress"+ i+ millisUntilFinished);
                    i++;
                    int Start = ltimestampStart.intValue();
                    int Stop = ltimestampStop.intValue();
                    prBar.setProgress((int)i*100/(Stop/Start));

                }

                @Override
                public void onFinish() {
                    //Do what you want
                    i++;
                    prBar.setProgress(100);
                }
            };
            mCountDownTimer.start();
        }

Но проблема в том, что int не может обработать мою метку времени в миллисисах, а setProgress() не работает с типом long.

Что я могу попробовать для достижения своей задачи?

UPD: в зависимости от моей задачи, я думаю, countdowntimer - это не то, что мне нужно.

1 Ответ

1 голос
/ 30 июня 2019

Инициализируйте ваш индикатор прогресса и CountDownTimer следующим образом -

 MyCountDownTimer myCountDownTimer;
`ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressbar);`
 progressBar.setProgress(100);

Сделайте так, чтобы ваш отсчет времени был таким -

public class MyCountDownTimer extends CountDownTimer {

   public MyCountDownTimer(long millisInFuture, long countDownInterval) {
    super(millisInFuture, countDownInterval);
  }

    @Override
    public void onTick(long millisUntilFinished) {
    Log.d("Time in millis", String.valueOf(millisUntilFinished));
    int progress = (int) (millisUntilFinished/100);
    progressBar.setProgress(progress);
   }

    @Override
    public void onFinish() {
    Log.d("Time in millis", "Timer finished");
    progressBar.setProgress(0);
   }
}

Назовите свой CountDownTimer следующим образом -

myCountDownTimer = new MyCountDownTimer(50000, 1000);
myCountDownTimer.start();
...