1.分屏后画面边缘显示桌面背景
surfaceview 设置了透明属性导致。
mImageSubtitleSurfaceViewOne.getHolder().setFormat(PixelFormat.RGBA_8888);
去掉即可。
2.分屏后不会适配视频尺寸,导致画面被挤压或拉伸。
外部设置videoview的params导致。
public void setVideoDisplayFullScreen(int viewId) {
Log.i(TAG, "---setVideoDisplayFullScreen-- viewId:" + viewId);
FrameLayout.LayoutParams params = null;
params = new FrameLayout.LayoutParams(mScreenResolutionWidth , mScreenResolutionHeight, Gravity.CENTER);
videoPlayerHolder.getLinearLayout(viewId).setLayoutParams(params);
}
不要在外部设置params
3.竖屏后画面没有适配屏幕尺寸
竖屏后屏幕宽高变化但是视频宽高没有变化导致,交换宽高使之显示与横屏画面一致
if(((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation() == Surface.ROTATION_270){
int temp = widthMeasureSpec;
widthMeasureSpec = heightMeasureSpec;
heightMeasureSpec = temp;
Log.d(ONMEASURETAG, "widthMeasureSpec1 = " + widthMeasureSpec + "heightMeasureSpec1 = " + heightMeasureSpec);
}
if(((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation() == Surface.ROTATION_270){
int temp = width;
width = height;
height = temp;
}
竖屏后改变视频方向暂时无需求,就没有去看怎么做,以后再探索。
4.分屏后画面闪烁。
导致原因猜测是videoview多次onMeasure()导致。
解决方法:manifest文件中对应活动下配置android:configChanges=“keyboard|keyboardHidden|screenSize|smallestScreenSize|screenLayout|orientation|layoutDirection”>
这样活动就不会重建,就没问题了。
控制栏控件属性最好match_parent 因为活动不重建他不会自动加载对应布局,改为MATCH_PARENT后可以自动适配尺寸。