java - 如何在android中使用计时器设置进度条?

标签 java android timer android-widget android-ndk

我已经学会了如何让进度条与特定任务一起工作 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/

相关文章:

android - 如何在Android中使用Google Analytics for Firebase发送自定义指标和自定义维度

java - 未从线程接收位置数据

java - 在基于 Spring 的 Java 服务器上管理与 Web 客户端的异步/推送通信的最佳方式

java - 在不同时区操作 JCalendar

java - 如何从 Tomcat/Java 应用程序创建文件名带有 UTF-8 字符的系统文件?

java - 将计时器添加到我的程序 (javafx)

php - 倒数计时器 PHP 错误

java - Kadane 算法的 O(N) 中的最小总和子数组

android - 我可以获得 EditText 的默认提示颜色吗?

javascript - 如何在html中有多个屏幕并滑动这些屏幕