我製作了一個帶有surfaceview和mediaplayer的視頻播放器。 我有10個視頻和10個按鈕。 如果點擊每個按鈕,每個視頻都在播放。媒體播放器完成後如何清除表面支架?
這裏是我的代碼..
//onCreate
holder = surfaceview.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//Button1
if(mp == null)mp = new MediaPlayer();
mp.setDataSource(mediaplay_path);
mp.setDisplay(holder);
mp.setScreenOnWhilePlaying(true);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare();
mp.start();
//Button2
if(mp != null){
mp.stop();
mp.reset();
}
mp.setDataSource(mediaplay_path2);
mp.setDisplay(holder);
mp.setScreenOnWhilePlaying(true);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare();
mp.start();
//Button3~Button10 is same as Button2..
一切都很好。 我的自定義視頻工作正常。 但是當視頻轉向下一個時,前一個視頻的最後一個場景會保留一段時間,然後轉向下一個視頻場景。
我認爲這是因爲在下一個視頻播放之前應該清楚上一個表面視圖。 但我不知道如何清除表面視圖或表面持有人。
我已經搜索了這個,但只能找到如何播放視頻,而不是如何清除從mediaplayer設置disaply的SurfaceView。
請幫幫我~~!
這是最好的解決方案嗎?下一個視頻前沒有辦法清除SurfaceHolder嗎? – 2014-03-12 21:16:07
void ClearTextureView() {varillav = _textureView.LockCanvas(); cnv.DrawColor(Android.Graphics.Color.Transparent, Android.Graphics.PorterDuff.Mode.Clear); _textureView.UnlockCanvasAndPost(cnv); } – 2018-02-21 10:52:31