更新 这篇文章是从我用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();
希望有人能够为我揭示这一点,总是抱歉这个简短的通用问题,只是想找出如何用计时器加载进度条
再次获取任何帮助
答案 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:
您可以使用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();