两层surfaceView放置在同一个布局中显示
-
layout布局代码
-
<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_vertical|center_horizontal" > < SurfaceView android:id="@+id/preview_one" android:layout_width="match_parent" android:layout_height="match_parent" /> <SurfaceView android:id="@+id/preview_two" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
-
说明:preview_two放在preview_one后,则preview_two在图层上属于preview_one的上层
-
-
surfaceView全屏展示时,在屏幕上切换展示,如何做?
-
setVisable()函数调用
- 通过这个函数可以设置surfaceView在屏幕上可见和不可见,设置上层view不可见即可展示下层view
- 问题:通过setVisable()数把surfaceView设置为不可见后,再次设置为可见,surfaceView上不展示图像
- 原因:SurfaceView和普通的View不一样,它拥有一个独立于Activity之外的Window,当SurfaceView被设置为不可见的时候,其所对应的Window就会销毁,再想去显示这个SurfaceView的时候就不得不重新创建
-
动态设置surfaceView的大小
- 要展示下层preview_one,可先以使preview_two的尺寸设置为几个像素的大小,展示preview_two时,再设置回全屏大小
- 原因:surfaceView的大小不影响它的模型surface中的图像数据,surfaceView的尺寸只和屏幕上展示的尺寸相关联
-