如何在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中使用计时器设置进度条?的主要内容,如果未能解决你的问题,请参考以下文章

圆形进度条,如何实现这一目标

长按如何使进度条变化Android

如何在Android中制作这个进度条? [关闭]

圆形进度条 Android

如何给progressbar圆形进度条设置颜色

如何制作WinForm中自定义进度条