【问题标题】:GLSurfaceView/SurfaceView overlapGLSurfaceView/SurfaceView 重叠
【发布时间】:2011-05-03 13:54:09
【问题描述】:

我之前问过这个问题,但没有收到回复,所以我再试一次。

我需要在 Android 3.0 的摩托罗拉 Xoom 上制作带有一些附带标签和图形的渲染 2D 图片。虽然我需要的只是一个 SurfaceView (Canvas) 或一个 GLSurfaceView,但我真的很想同时使用这两者,因为 GLSurfaceView 的渲染速度更快,而且 SurfaceView 的标签和图形更容易。视觉布局如下图所示。

我试图通过在 GLSurfaceView 之后的布局 XML 中声明 SurfaceView 来将其置于顶部。 SurfaceView 是透明的(除了我明确绘制的地方),因此仍然可以看到 GLSurfaceView。

除了一个巨大的例外,这种方法效果很好。我在 GLSurfaceView 区域中的 SurfaceView 上绘制的任何内容都不会显示。为了验证这一点,我在边界上绘制了一些文本(一些在共享区域中,一些在 SurfaceView 区域中),并在 GLSurfaceView 边界处被截断。我曾尝试使用“bringToFront”方法来解决此问题,但没有奏效。

谁能给我一些关于为什么这不起作用或我能做些什么的想法?是GLSurfaceView在前面,还是GLSurfaceView直接写入显存,所以前面有没有什么关系?

【问题讨论】:

    标签: java android opengl-es


    【解决方案1】:

    SurfaceViews 的工作方式会让你无法做你想做的事。您必须在 GLSurfaceView 中呈现您的文本。

    【讨论】:

      【解决方案2】:

      切勿尝试将 GLSurfaceView 与任何东西(上方或下方)重叠。充其量它会在您的设备上中断并且您会尽早发现它,最坏的情况是它可以在一台设备上运行,而不能在其他设备上运行。咬紧牙关,在 GL 视图中做所有事情,或者什么都不做。如果您需要速度,那么 GL 是您的最佳选择。

      【讨论】:

      • 在我的应用程序中,我在 FrameLayout 堆栈中的 GLSurfaceView 顶部覆盖了许多元素(按钮、LinearLayout、自定义视图等...但没有 SurfaceView)。它完美无瑕,在 280000 次下载和大约 2000 封支持邮件之后,我从未听说过任何问题。您能否详细说明您遇到或知道的具体问题?
      • 上次我尝试将文本放在 GLSurfaceView 上时,帧速率下降并且文本的背景看起来很不稳定。我曾在一些有类似问题的电子邮件链上工作过。也许你找到了有效的魔法组合,或者我们都很不走运。
      • 好的,谢谢。我不知道有任何此类问题。我会试着问一个关于这个的具体问题,以便澄清。
      【解决方案3】:

      我们应该将 setZOrderMediaOverlay 和 setZOrderOnTop 设置为真值

      setZOrderMediaOverlay

      在 API 级别 5 中添加 无效 setZOrderMediaOverlay(布尔 isMediaOverlay) 控制表面视图的表面是否放置在窗口中另一个常规表面视图的顶部(但仍位于窗口本身的后面)。这通常用于在底层媒体表面视图之上放置叠加层。

      请注意,这必须在表面视图的包含窗口附加到窗口管理器之前设置。

      调用它会覆盖之前对 setZOrderOnTop(boolean) 的任何调用。

      setZOrderOnTop

      在 API 级别 5 中添加 void setZOrderOnTop(布尔值 onTop) 控制表面视图的表面是否放置在其窗口的顶部。通常它被放置在窗口后面,以允许它(在大多数情况下)看起来与层次结构中的视图复合。通过设置它,您可以将其放置在窗口上方。这意味着此 SurfaceView 所在窗口的任何内容都不会在其表面上可见。

      请注意,这必须在表面视图的包含窗口附加到窗口管理器之前设置。

      调用它会覆盖之前对 setZOrderMediaOverlay(boolean) 的任何调用。

      请参考此链接: http://developer.android.com/reference/android/view/SurfaceView.html#setZOrderMediaOverlay(boolean)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多