【发布时间】:2015-02-20 10:48:29
【问题描述】:
我正在创建一个 FrameLayout 类型的布局,我在其中添加了两个视图。两个视图分别是 GLSurfaceView 和 SurfaceView 的对象。根据有关 SurfaceView 的 Android 开发者文档,
“表面是 Z 顺序的,因此它位于持有其 SurfaceView 的窗口后面;SurfaceView 在其窗口上打一个孔以显示其表面。”
它对我很有效,SurfaceView 总是在我的 GLSurfaceView 后面(用于 opneGL 绘图)。但是在外部事件之后恢复,以下配置的行为很奇怪,
安卓版本:4.3 设备型号:Nexus 7 内核版本 3.4.0.g1f57c39 6月13日 内部版本号:JWR66N
对于此配置,在外部事件后恢复会将我的 GLSurfaceView 置于 SurfaceView 后面。换句话说,SurfaceView 位于 ZOrder 的顶部,而我的 OpenGL 绘图不再可见。在高于 Android 4.3 的版本上,不会出现此行为。
我可以通过调用 SurfaceView 的以下方法并将 true 作为参数复制到所有版本上。
void setZOrderOnTop
这是已知问题吗?有人可以帮我解决这个问题吗?
问候, 苏梅德
【问题讨论】:
-
我打赌它依赖于设备......这个洞不是很可靠,并且容易在滚动、重新布局、恢复时出现伪影......
-
有什么替代方案。我想在视频上放置一些控件,我可以使用哪些布局、视图。你能指点我吗.......
-
嗯,你正在接近边缘!看看stackoverflow.com/questions/5647824/…,他们似乎在讨论surfaceviews的堆叠
-
感谢您的信息。
-
我注意到的一件事是这只发生在 Jellybean 上
标签: android surfaceview