1

我想GLSurfaceView在 Camera2 API 预览 () 前做一个 OpenGL 动画 ( TextureView),但动画不透明。我已经GLSurfaceViewTextureView.

  • 它仅适用,如果我在setZOrderOnTop(true);中设置GLSurfaceView,但所有按钮和抽屉都在视图后面...

有没有办法使GLSurfaceView(动画)透明?

4

2 回答 2

2

SurfaceView(及其子类 GLSurfaceView)有两部分,Surface 和 View。Surface 提供对独立于 View UI 层的单独层的访问。您可以将其放置在视图层的前面或后面,但它不能适合“视图之间”。

使用setZOrderOnTop(true)是将 Surface 层放置在 View 前面的正确方法。如果这不是您想要的,您应该考虑使用 TextureView,因为它们在 View 层上呈现并且可以位于单个 View 的上方或下方。

您可以使用 OpenGL ES 渲染到 TextureView(或任何其他带有 Surface)。例如,请参阅 Grafika 中的“ TextureView中的简单 GL”活动。

于 2016-02-03T17:14:36.823 回答
0

setZOrderOnTop()有效,但这意味着您不能拥有透明以上的任何东西SurfaceView,这是不幸的。

唯一的方法是,TextureView将 Camera2 预览的 替换为SurfaceView. 然后我可以setZOrderMediaOverlay(true);GLSurfaceView.

setZOrderMediaOverlay(boolean isMediaOverlay)

控制表面视图的表面是否放置在窗口中另一个常规表面视图的顶部(但仍位于窗口本身的后面)。

于 2016-02-23T07:29:49.043 回答