我已经学会了如何让进度条与特定任务一起工作 from here .
但我在我的应用程序中使用了计时器。基于该值,我想设置 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 的任务。但是我不知道如何用计时器来做。所以请帮助我。
谢谢。
最佳答案
你的问题似乎是你的 doWork() 方法(正如你在评论中提到的那样,该方法没有做任何事情)。如您所见,progressBar 的进度取决于此方法:
mProgressStatus = doWork();
假设您的天文钟每秒更新一次,因此 progressBar 将在 100 秒后填满。为了实现这一点,您的 doWork 方法应该返回经过的秒数的递增值,即 1、2、3...到 100。但仅返回该值是不够的,因为使用您当前的代码,progressBar 将立即填充。
最简单的解决方案是:
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();
希望对您有所帮助,
谢尔盖。
关于java - 如何在android中使用计时器设置进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533339/