我已经学会了如何让进度条与特定任务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的任务。但是如何用天文台做我不知道的事情。所以请帮助我。
感谢。
答案 0 :(得分:1)
您的问题似乎是您的doWork()方法(正如您在评论中提到的那样,该方法中没有任何操作)。正如您所看到的,progressBar的进度取决于此方法:
mProgressStatus = doWork();
让我们假设您的计时器每秒更新一次,因此当100秒通过时,progressBar将会满。要实现这一点,你的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();
希望这有帮助,
谢尔盖。