2012-03-02 33 views
1

我已經學會了如何獲取進度條與特定任務from here一起工作。如何在android中設置天文臺的進度條?

但我在我的應用程序中使用天文鐘。並基於該值我想設置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。但如何用我不知道的天文鐘來做到這一點。所以請幫助我。

謝謝。

+0

爲什麼我對這個問題變得消極? – 2012-03-02 12:55:47

+0

這個問題有什麼不對? – 2012-03-02 12:56:58

+0

你應該嘗試使用睡眠(1000); – 2012-03-02 13:20:17

回答

1

你的問題似乎是你的doWork()方法(正如你在評論中提到的那樣,在該方法中沒有做任何事情)。正如你可以看到進度條的進展取決於從這個方法:

mProgressStatus = doWork(); 

讓我們假設你的cronometer正在更新每一秒,所以進度會滿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(); 

希望這有助於
謝爾蓋。