我想GLSurfaceView
在 Camera2 API 预览 () 前做一个 OpenGL 动画 ( TextureView
),但动画不透明。我已经GLSurfaceView
在TextureView
.
- 它仅适用,如果我在
setZOrderOnTop(true);
中设置GLSurfaceView
,但所有按钮和抽屉都在视图后面...
有没有办法使GLSurfaceView
(动画)透明?
我想GLSurfaceView
在 Camera2 API 预览 () 前做一个 OpenGL 动画 ( TextureView
),但动画不透明。我已经GLSurfaceView
在TextureView
.
setZOrderOnTop(true);
中设置GLSurfaceView
,但所有按钮和抽屉都在视图后面...有没有办法使GLSurfaceView
(动画)透明?
SurfaceView(及其子类 GLSurfaceView)有两部分,Surface 和 View。Surface 提供对独立于 View UI 层的单独层的访问。您可以将其放置在视图层的前面或后面,但它不能适合“视图之间”。
使用setZOrderOnTop(true)
是将 Surface 层放置在 View 前面的正确方法。如果这不是您想要的,您应该考虑使用 TextureView,因为它们在 View 层上呈现并且可以位于单个 View 的上方或下方。
您可以使用 OpenGL ES 渲染到 TextureView(或任何其他带有 Surface)。例如,请参阅 Grafika 中的“ TextureView中的简单 GL”活动。
setZOrderOnTop()
有效,但这意味着您不能拥有透明以上的任何东西SurfaceView
,这是不幸的。
唯一的方法是,TextureView
将 Camera2 预览的 替换为SurfaceView
. 然后我可以setZOrderMediaOverlay(true);
在GLSurfaceView
.
setZOrderMediaOverlay(boolean isMediaOverlay)
控制表面视图的表面是否放置在窗口中另一个常规表面视图的顶部(但仍位于窗口本身的后面)。