【问题标题】:How to set the progressbar with the chronometer in android?如何在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 值取得进展。所以为此我需要帮助。那么如何设置呢?

标签: java android timer android-widget android-ndk


【解决方案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();

希望这会有所帮助,
塞尔希。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2011-06-03
    相关资源
    最近更新 更多