Camera2预览是黑色的,如果我在前面加一个GLSurfaceView
Camera2 preview is black, if I add a GLSurfaceView in front
我想在 Camera2 API 预览 (TextureView
) 前制作 OpenGL 动画 (GLSurfaceView
),但动画不是透明的。我在 TextureView
.
前面添加了 GLSurfaceView
- 只有当我在
GLSurfaceView
中设置 setZOrderOnTop(true);
时它才有效,但是所有按钮和抽屉都在视图的后面...
有没有办法让 GLSurfaceView
(动画)透明?
SurfaceView(及其子class GLSurfaceView)有两部分,Surface 和View。 Surface 提供对单独层的访问,独立于 View UI 层。您可以将它放在视图层的前面或后面,但它不能容纳 "between" 个视图。
使用setZOrderOnTop(true)
是将表面层放置在视图前面的正确方法。如果这不是您想要的,您应该考虑使用 TextureView,因为它们在 View 层上呈现并且可以位于各个 View 的上方或下方。
您可以使用 OpenGL ES 渲染到 TextureView(或任何其他带有 Surface 的对象)。例如,参见 Grafika.
中的 "simple GL in TextureView" Activity
setZOrderOnTop()
有效,但这意味着您不能在透明 SurfaceView
之上拥有任何东西,这很不幸。
唯一的方法是,将 Camera2 预览的 TextureView
替换为 SurfaceView
。然后我可以在GLSurfaceView
中使用setZOrderMediaOverlay(true);
。
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).
我想在 Camera2 API 预览 (TextureView
) 前制作 OpenGL 动画 (GLSurfaceView
),但动画不是透明的。我在 TextureView
.
GLSurfaceView
- 只有当我在
GLSurfaceView
中设置setZOrderOnTop(true);
时它才有效,但是所有按钮和抽屉都在视图的后面...
有没有办法让 GLSurfaceView
(动画)透明?
SurfaceView(及其子class GLSurfaceView)有两部分,Surface 和View。 Surface 提供对单独层的访问,独立于 View UI 层。您可以将它放在视图层的前面或后面,但它不能容纳 "between" 个视图。
使用setZOrderOnTop(true)
是将表面层放置在视图前面的正确方法。如果这不是您想要的,您应该考虑使用 TextureView,因为它们在 View 层上呈现并且可以位于各个 View 的上方或下方。
您可以使用 OpenGL ES 渲染到 TextureView(或任何其他带有 Surface 的对象)。例如,参见 Grafika.
中的 "simple GL in TextureView" ActivitysetZOrderOnTop()
有效,但这意味着您不能在透明 SurfaceView
之上拥有任何东西,这很不幸。
唯一的方法是,将 Camera2 预览的 TextureView
替换为 SurfaceView
。然后我可以在GLSurfaceView
中使用setZOrderMediaOverlay(true);
。
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).