视频学习之旅(一) SurfaceView控件--------------画面重叠问题

有一个这样的需求,下面有2个tab进行切换,第一个是录像界面(暂定为界面A),第二个是拍照界面(暂定为界面B),我第一个想到的就是用SurfaceView控件来实现,在布局文件里面它的属性很简单的。然后就想着录像界面就显示录像预览画面,拍照界面就显示拍照预览画面,但是当我切换的时候问题就来了。第一次打开应用是进入界面A,当我切换到界面B时,发现界面A的预览画面还显示在界面B上,这样就遮挡了界面B的SurfaceView,这样肯定是不行的,然后我就去查看了SurfaceView的开发文档。


public void setZOrderMediaOverlay (boolean isMediaOverlay)

Control whether the surface view's surface is placed on top of another regular surface view in the window (but still behind the window itself). This is typically used to place overlays on top of an underlying media surface view.

Note that this must be set before the surface view's containing window is attached to the window manager. 

setZOrderMediaOverlay

大概意思就是不论这个SurfaceView是否在其他SurfaceView的上面,这个api的作用通常就是将其覆盖在其他媒体上面
这个SurfaceView是否在其他SurfaceView的上面,这个api的作用通常就是将其覆盖在其他媒体上面。然后我就在代码中设置了这句代码发现并没有解决我的问题,这个时候我想到了surfaceView的生命周期,原来我在切换的时候它界面A的surfaceView并没有销毁,照理来说当我不再界面A的时候他就会隐藏,既然知道他没有销毁就好办了,每次在推出界面A的时候设置当前界面的SurfaceView不可见,刚进入的时候就设置为可见,这样就不会出现重叠问题了,这也证明了当前界面onPause时,surfaceView是会销毁的。

猜你喜欢

转载自blog.csdn.net/qq_33756493/article/details/64128706
今日推荐