我正在使用VideoView組件來播放視頻。手動調用stopPlayback()後,我似乎無法清除VideoView顯示。我想重置VideoView,以便原始背景可見。Android VideoView在stopPlayback後清除顯示()
- 在VideoView組件中播放視頻。
- 選擇要播放的新視頻。
- VideoView卡在第一個視頻的最後一幀,直到下一個視頻開始。如果下一個視頻出現錯誤,則來自第一個視頻的靜態圖片仍會停留在此處。
- 如果我讓視頻播放到完成狀態,顯示將被清除。
我正在使用的代碼:基於所述VideoView.java源上
private VideoView videoViewer = null;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
if (videoViewer != null) {
videoViewer.setOnPreparedListener(new OnPreparedListener());
}
...
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (videoViewer != null) {
videoViewer.stopPlayback();
videoViewer.setVideoURI(Uri.parse("http://my_vido_url/playlist.m3u8"));
}
}
private class OnPreparedListener implements MediaPlayer.OnPreparedListener {
@Override
public void onPrepared(MediaPlayer mp) {
videoViewer.start();
}
}
筆記,stopPlayback()採用對底層的MediaPlayer以下動作:
public void stopPlayback() {
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
當我這樣做,下一個回放仍然顯示前一幀的最後一幀。任何想法爲什麼會發生? – slhck
實際的視頻幀被繪製在VideoView的「下面」表面上。在VideoView上設置背景會隱藏框架,但不會將其刪除。清除背景時,舊框架仍然存在。 – William