如何在android中使用计时器设置进度条?
Posted
技术标签:
【中文标题】如何在android中使用计时器设置进度条?【英文标题】:How to set the progressbar with the chronometer in android? 【发布时间】:2012-03-20 23:00:37 【问题描述】:我已经学习了如何让进度条与特定任务 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 的任务。但是如何用我不知道的计时器来做到这一点。所以请帮助我。
谢谢。
【问题讨论】:
为什么我对这个问题持否定态度? 这个问题有什么问题? 你应该尝试使用 sleep(1000); 你的 doWork() 方法是做什么的?你能发布doWork()的代码吗?我在这里看到的唯一内容是来自developer.android.com 的代码 sn-p...也许这就是为什么有人给你负分的原因.. @Serhiy:现在我对 doWork(); 什么都不做。但我想实现进度条应该是使用 cronometer 值取得进展。所以为此我需要帮助。那么如何设置呢? 【参考方案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();
希望这会有所帮助, 塞尔希。
【讨论】:
以上是关于如何在android中使用计时器设置进度条?的主要内容,如果未能解决你的问题,请参考以下文章