画面大小切换很简单,需求注意的地方在于两个画面层级的切换。
主要涉及的方法有
setZOrderOnTop(boolean onTop)
setZOrderMediaOverlay (boolean isMediaOverlay)
两个方法都可以设置SurfaceView的层级,但第一个方法是将该SurfaceView设置在当前窗口的最顶层,会遮挡其他所有控件。第二个方法则是将SurfaceView设置在所有SurfaceView的最顶层,不会影响其他控件。所以在进行画面切换时,优先选择使用第二个方法。
需要注意的是:
Note that this must be set before the surface view’s containing window is attached to the window manager.
简单的讲就是这个方法需要在SurfaceView创建之前使用。此处需要注意SurfaceView在设置可见时才进行创建,不可见时销毁。
因此可以在设置层级之前先设置不可见,也就是销毁操作,设置层级之后再次创建,可以完成大小画面切换。
mSv.setVisibility(View.INVISIBLE);
mSv.setZOrderMediaOverlay(true);
mSv.setVisibility(View.VISIBLE);
但是这种方法会出现一个短暂的黑屏,暂时没能解决。