2012-03-02 9 views
1

私はプログレバーを得る方法を学びましたperticularタスク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(); 

私はprogressStatusにint型のデータを返す連続作業をしなければならないことを知っています。しかし、私は知らないクロノメーターでそれを行う方法。だから私を助けてください。

ありがとうございました。

+0

なぜ私はこの質問に否定的になっていますか? –

+0

この質問には何が間違っていますか? –

+0

あなたはsleep(1000)を使うべきです。 –

答えて

1

あなたの問題はあなたのdoWork()メソッドであるようです(そのメソッドでは何も行われていないとコメントしました)。あなたはプログレスバーの進捗状況を見ることができるように、この方法から異なります。

mProgressStatus = doWork(); 

は100秒が合格するとき、プログレスバーがいっぱいになりますので、ごcronometerが毎秒を更新していると仮定します。これを達成するには、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(); 

希望、
セルゲイ。

関連する問題