Android ProgressBar: загрузка с помощью таймера - PullRequest
5 голосов
/ 06 декабря 2011

Обновление: Этот пост был с того момента, когда я изучал Android с Android 2.2, не забудьте проверить, совместим ли он с уровнем API, с которым вы работаете.

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

мой вопрос, лол, кто-нибудь сталкивался с какими-нибудь учебниками или примерами того, как это сделать? Я думаю, все, что мне нужно, это цикл while, но я еще не видел, чтобы это было сделано по таймеру. Я полный нуб, но медленно, но верно учусь

Мой таймер

final Timer t = new Timer();
    t.schedule(new TimerTask() {
        public void run() {
            d.dismiss();  //MY DIALOG WINDOW
            t.cancel();
        }
    }, 7000);   

Я пытался заставить его работать, но думаю, что нанес ему больше вреда, чем пользы

isRunning = false;
    // handler for the background updating
    final Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            total = total - 1;
            String perc = String.valueOf(total).toString();
            a.setText(perc + " SECONDS  until close");
            bar.incrementProgressBy(25);
        }
    };

    super.onStart();
    // reset the bar to the default value of 0
    bar.setProgress(0);
    // create a thread for updating the progress bar
    Thread background = new Thread(new Runnable() {
        public void run() {
            try {
                for (int i = 4; i < 20 && isRunning; i++) {
                    // wait 1000ms between each update
                    Thread.sleep(1000);
                    handler.sendMessage(handler.obtainMessage());
                }
            } catch (Throwable t) {
            }
        }
    });
    isRunning = true;
    // start the background thread
    background.start();

надеясь, что кто-то сможет пролить свет на это для меня, как всегда извиняюсь за короткий общий вопрос, просто хочу выяснить, как загрузить индикатор выполнения с таймером

снова спасибо за любую помощь

Ответы [ 2 ]

11 голосов
/ 08 декабря 2011

Используйте android.os.CountDownTimer

 countDownTimer = new CountDownTimer(length_in_milliseconds,period_in_milliseconds) {
        private boolean warned = false;
        @Override
        public void onTick(long millisUntilFinished_) {
           progressBar.progress = (length_in_milliseconds-millisUntilFinished_)/lenght_in_milliseconds*100.0;
        }

        @Override
        public void onFinish() {
            // do whatever when the bar is full
        }
    }.start();
1 голос
/ 15 апреля 2015

Мой ответ от здесь :

Вы можете использовать ObjectAnimator для анимации прогресса ProgressBar:

ObjectAnimator animation = ObjectAnimator.ofInt(pb, "progress", 0, 100);
animation.setDuration(5000);
animation.setInterpolator(new DecelerateInterpolator());
animation.addListener(new Animator.AnimatorListener() {
    @Override
    public void onAnimationStart(Animator animator) { }

    @Override
    public void onAnimationEnd(Animator animator) {
        //do something when the countdown is complete
    }

    @Override
    public void onAnimationCancel(Animator animator) { }

    @Override
    public void onAnimationRepeat(Animator animator) { }
});
animation.start();
...