Android ProgressBar:使用Timer加载

时间:2011-12-06 08:44:52

标签: android android-2.2-froyo

  

更新   这篇文章是从我用android 2.2学习android时,请务必检查这是否与你正在使用的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 个答案:

答案 0 :(得分:11)

使用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 :(得分:1)

我的答案来自here

您可以使用ObjectAnimatorProgressBar

的进度设置动画
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();