2012-08-04 48 views
0

我有一個進度條,我想提前5秒準確。我試圖通過一個'for'循環10次,並通過循環的每次運行增加進度條的十分之一吧。我有遞增條1/10,但林正試圖創建一個循環,代碼:進度條 - 按增量暫停0.5秒?

遞增吧〜1/10 等待0.5秒... 遞增到酒吧2/10日 等待0.5秒... 增量吧〜3/10日 等待0.5秒... 等

這是到目前爲止我的代碼,但它不工作,則使酒吧10/10(全) 。有任何想法嗎?

非常感謝。

   for(int a = 0; a <= 10; a++){ 
       if(mp1.isPlaying()){ // my 5 second wav file 

         int newProgress = pBar1.getProgress() + (pBar1.getMax()/10); 
         if (newProgress < 0) { 
          newProgress = 0; 
          } 
        pBar1.setProgress(newProgress); 
       // pause for 0.5 seconds here// 
       } 

回答

1

Thread.sleep(500);將暫停半秒鐘。但是你必須在UI線程以外的線程中執行此操作。如果您將UI線程置入睡眠狀態,則應用中的所有其他交互都將鎖定,直到睡眠結束。

+0

謝謝你的意見! – wagohn 2012-08-10 22:00:54

1

你問的問題是,雖然很容易暫停0.5秒,但我做了一個thread sleep,你的整個UI將凍結,這是不好的,你不應該這樣做。

您真正的問題似乎是您需要一個進度條來說明您正在播放的音頻片段所用的時間。如果您使用的是MediaPlayer,則可以使用getCurrentPositiongetDuration來計算任何尺寸的音頻片段。即:

//Calculate the current clip position as a value between 0 and 100 
int progress = (int) ((float) mp1.getCurrentPosition()/mp1.getDuration() * 100); 
+0

謝謝您的輸入! – wagohn 2012-08-10 22:00:02