2011-10-11 63 views

回答

23

最後我想通了!

,我想出了這樣的解決方案:

首先設置最大進步搜索條的視頻

videoView.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 

      seekBar.setMax(videoView.getDuration()); 
      seekBar.postDelayed(onEverySecond, 1000); 
     } 
    }); 

這可運行將繼續更新進度的時間:

private Runnable onEverySecond=new Runnable() { 

    @Override 
    public void run() { 

     if(seekBar != null) { 
      seekBar.setProgress(videoView.getCurrentPosition()); 
     } 

     if(videoView.isPlaying()) { 
      seekBar.postDelayed(onEverySecond, 1000); 
     } 

    } 
}; 

然後進行搜索條的setOnSeekBarChangeListener可以用來把用戶尋求在媒體上。通過使用 FROMUSER布爾我們可以辨認出它是否是一個回調,由於用戶的交互或

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
     } 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, 
       boolean fromUser) { 

      if(fromUser) { 
       // this is when actually seekbar has been seeked to a new position 
       videoView.seekTo(progress); 
      } 
     } 
    }); 
+0

太棒了!但當視頻結束,我想播放'videoView.start()'它再次seekBar不工作,如何解決這個問題? –

0

您設置了seconday progress

不,你在正確的軌道上。它非常適合顯示諸如下載進度和流(媒體)的當前位置之類的內容。

+0

感謝您的答覆。 但我正在使用二級進度顯示流量。 我在下面發表我的想法。 –