diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java index fb6a816e6..e0a0c056c 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java @@ -57,6 +57,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl private long mCurrentBufferPosition; private float mCurrentSpeed; + private IRenderView.ISurfaceHolder mSurfaceHolder; private IMediaPlayer.Listener mListener; private IRenderView mRenderView; @@ -108,6 +109,10 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } private void setRenderView(int render) { + if (mRenderView != null) { + bindSurfaceHolder(mPlayer, mSurfaceHolder); + return; + } switch (render) { case RENDER_TEXTURE_VIEW: setRenderView(new TextureRenderView(getContext())); @@ -119,7 +124,6 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } private void setRenderView(IRenderView renderView) { - removeRenderView(); mRenderView = renderView; setResizeMode(mCurrentAspectRatio); mContentFrame.addView(mRenderView.getView(), 0, new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER)); @@ -190,13 +194,13 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl public void release() { if (mPlayer == null) return; + removeRenderView(); mPlayer.release(); mPlayer = null; reset(); } private void reset() { - removeRenderView(); mSubtitleView.setText(""); mTargetState = STATE_IDLE; mCurrentState = STATE_IDLE; @@ -401,7 +405,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl @Override public void onSurfaceCreated(@NonNull IRenderView.ISurfaceHolder holder, int width, int height) { - if (mPlayer != null) bindSurfaceHolder(mPlayer, holder); + if (mPlayer != null) bindSurfaceHolder(mPlayer, mSurfaceHolder = holder); } @Override