Как установить прогрессбар с хронометром в андроиде? - PullRequest
1 голос
/ 02 марта 2012

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

Но я использую хронометр в своем приложении.И на основании этого значения я хочу установить ProgressBar.

Так как это сделать.?

Я заставил эту тему работать.Код:

// Start lengthy operation in a background thread         
    progressThread = new Thread(new Runnable() {             
        public void run() {                 
            while (mProgressStatus < 100) {                     
                mProgressStatus = doWork();                     
                // Update the progress bar                     
                mHandler.post(new Runnable() {                         
                    public void run() {                             
                        progressBar.setProgress(mProgressStatus);                         
                    }                     
                });                 
            }             
        }         
    });

    progressThread.start();

Я знаю, что мне нужно сделать задачу, которая непрерывно возвращает данные int в progressStatus.Но как это сделать с хронометром, которого я не знаю.Поэтому, пожалуйста, помогите мне за это.

Спасибо.

1 Ответ

1 голос
/ 03 марта 2012

Похоже, вашей проблемой является метод doWork () (как вы упомянули в комментарии, что в этом методе ничего не делается). Как вы видите, прогресс progressBar зависит от этого метода:

mProgressStatus = doWork();

Предположим, что ваш хронометр обновляется каждую секунду, поэтому индикатор выполнения будет заполнен через 100 секунд. Для этого ваш метод doWork должен возвращать возрастающее значение пройденных секунд, то есть от 1,2,3 ... до 100. Но возвращать только это значение недостаточно, потому что с вашим текущим кодом прогрессбар будет заполнен мгновенно.
Наиболее простым решением будет:

mProgressStatus = 0;
progressThread = new Thread(new Runnable() {             
    public void run() {                 
        while (mProgressStatus < 100) {                                          
            // Update the progress bar                     
            mHandler.post(new Runnable() {                         
                public void run() {                             
                    progressBar.setProgress(mProgressStatus);                         
                }                     
            });
            mProgressStatus ++;
            android.os.SystemClock.sleep(1000); // Thread.sleep() doesn't guarantee 1000 msec sleep, it can be interrupted before               
        }             
    }         
});

progressThread.start();

Надеюсь, это поможет,
Serhiy.

...