2012-08-04 47 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