标签:
public void setRender(int render) {
		switch (render) {
		case RENDER_NONE:
			setRenderView(null);
			break;
		case RENDER_TEXTURE_VIEW: {
			TextureRenderView renderView = new TextureRenderView(getContext());
			if (mMediaPlayer != null) {
				renderView.getSurfaceHolder().bindToMediaPlayer(mMediaPlayer);
				renderView.setVideoSize(mMediaPlayer.getVideoWidth(),
						mMediaPlayer.getVideoHeight());
				renderView.setVideoSampleAspectRatio(
						mMediaPlayer.getVideoSarNum(),
						mMediaPlayer.getVideoSarDen());
				renderView.setAspectRatio(mCurrentAspectRatio);
			}
			setRenderView(renderView);
			break;
		}
		case RENDER_SURFACE_VIEW: {
			SurfaceRenderView renderView = new SurfaceRenderView(getContext());
			setRenderView(renderView);
			break;
		}
		default:
			Log.e(TAG, String.format(Locale.getDefault(),
					"invalid render %d\n", render));
			break;
		}
	}
public void setRenderView(IRenderView renderView) {
		if (mRenderView != null) {
			if (mMediaPlayer != null)
				mMediaPlayer.setDisplay(null);
			View renderUIView = mRenderView.getView();
			mRenderView.removeRenderCallback(mSHCallback);
			mRenderView = null;
			removeView(renderUIView);
		}
		if (renderView == null)
			return;
		mRenderView = renderView;
		renderView.setAspectRatio(mCurrentAspectRatio);
		if (mVideoWidth > 0 && mVideoHeight > 0)
			renderView.setVideoSize(mVideoWidth, mVideoHeight);
		if (mVideoSarNum > 0 && mVideoSarDen > 0)
			renderView.setVideoSampleAspectRatio(mVideoSarNum, mVideoSarDen);
		View renderUIView = mRenderView.getView();
		FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
				FrameLayout.LayoutParams.WRAP_CONTENT,
				FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.CENTER);
		renderUIView.setLayoutParams(lp);
		addView(renderUIView);
		mRenderView.addRenderCallback(mSHCallback);
		mRenderView.setVideoRotation(mVideoRotationDegree);
	}

public void initRenders() {
		mAllRenders.clear();
		if (mSettings.getEnableSurfaceView())
			mAllRenders.add(RENDER_SURFACE_VIEW);
		if (mSettings.getEnableTextureView()
				&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
			mAllRenders.add(RENDER_TEXTURE_VIEW);
		if (mSettings.getEnableNoView())
			mAllRenders.add(RENDER_NONE);
		if (mAllRenders.isEmpty())
			mAllRenders.add(RENDER_SURFACE_VIEW);
		mCurrentRender = mAllRenders.get(mCurrentRenderIndex);
		setRender(mCurrentRender);
	}
Android 视频播放器切换到下个视频时残留上个视频画面的解决办法
标签:
原文地址:http://www.cnblogs.com/shenchanghui/p/4885744.html