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

Java 如何在android中使用计时器设置进度条?,java,android,timer,android-widget,android-ndk,Java,Android,Timer,Android Widget,Android Ndk,我已经学会了如何让progressbar与特定任务一起工作 但我在我的应用程序中使用了计时器。根据这个值,我想设置进度条 那么怎么做呢 我已经把这根线做好了。 代码: //在后台线程中启动冗长的操作 progressThread=新线程(新Runnable(){ public void run(){ 而(mProgressStatus

我已经学会了如何让progressbar与特定任务一起工作

但我在我的应用程序中使用了计时器。根据这个值,我想设置进度条

那么怎么做呢

我已经把这根线做好了。 代码:

//在后台线程中启动冗长的操作
progressThread=新线程(新Runnable(){
public void run(){
而(mProgressStatus<100){
mProgressStatus=doWork();
//更新进度条
mHandler.post(新的Runnable(){
public void run(){
progressBar.setProgress(mProgressStatus);
}                     
});                 
}             
}         
});
progressThread.start();
我知道我必须使任务连续地将int数据返回到progressStatus。但我不知道如何用计时器来做。所以请帮我


谢谢。

您的问题似乎是您的doWork()方法(正如您在评论中提到的,该方法中没有任何操作)。如您所见,progressBar的进度取决于此方法:

mProgressStatus = doWork();
让我们假设您的cronometer每秒更新一次,因此当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();
mProgressStatus=0;
progressThread=新线程(新Runnable(){
public void run(){
而(mProgressStatus<100){
//更新进度条
mHandler.post(新的Runnable(){
public void run(){
progressBar.setProgress(mProgressStatus);
}                     
});
mProgressStatus++;
android.os.SystemClock.sleep(1000);//Thread.sleep()不能保证1000毫秒的睡眠,它可以在
}             
}         
});
progressThread.start();
希望这有帮助,

Serhiy.

您的问题似乎是您的doWork()方法(正如您在评论中提到的,该方法中没有任何操作)。如您所见,progressBar的进度取决于此方法:

mProgressStatus = doWork();
让我们假设您的cronometer每秒更新一次,因此当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();
mProgressStatus=0;
progressThread=新线程(新Runnable(){
public void run(){
而(mProgressStatus<100){
//更新进度条
mHandler.post(新的Runnable(){
public void run(){
progressBar.setProgress(mProgressStatus);
}                     
});
mProgressStatus++;
android.os.SystemClock.sleep(1000);//Thread.sleep()不能保证1000毫秒的睡眠,它可以在
}             
}         
});
progressThread.start();
希望这有帮助,

Serhiy.

为什么我对这个问题持否定态度?这个问题出了什么问题?你应该尝试使用sleep(1000);doWork()方法的作用是什么?你能把doWork()的代码贴出来吗?我在这里看到的唯一一件事是来自。。。也许这就是为什么有人给你负面评价的原因。@Serhiy:现在我什么都不做;。但是我想实现progressbar,它应该是带有cronometer值的GetProgress。因此,我需要帮助。那么如何设置呢?为什么我对这个问题持否定态度?这个问题出了什么问题?你应该尝试使用睡眠(1000);doWork()方法的作用是什么?你能把doWork()的代码贴出来吗?我在这里看到的唯一一件事是来自。。。也许这就是为什么有人给你负面评价的原因。@Serhiy:现在我什么都不做;。但是我想实现progressbar,它应该是带有cronometer值的GetProgress。因此,我需要帮助。那么如何设置呢?