【问题标题】:How to add a text on the top of GLSurfaceview with transparent background in android?如何在 android 中以透明背景在 GLSurfaceview 顶部添加文本?
【发布时间】:2011-09-12 14:13:15
【问题描述】:

您好,我有一个具有背景的父视图组,包含一个 openglview 作为该视图组的一部分。

我真正想要的是,我需要一个透明背景的openglview,我希望能够看到父背景,我希望能够在openglview之上写文本,我不想使用纹理

我试过这个选项,

  1. 将 openglview zorderontop 设置为 true。它使我的文本落后于 glview。如果我没有使 zorderontop 为真,则背景为黑色。

  2. 半透明主题设置为使我的 glview 和 父视图组变得透明的活动

  3. 我尝试扩展包含 glview 的布局并使用 ContexThemeWrapper 类动态更改 glview 的主题。但是 setTheme() 在运行时不起作用。仅在清单文件中应用主题才有效。

  4. 将布局背景应用于透明也不起作用,仍然是黑色背景。

【问题讨论】:

    标签: android opengl-es glsurfaceview


    【解决方案1】:

    问题在于您要绘制到两个单独的表面:一个由 ViewRoot 创建的表面,一个为 GLSurfaceView 创建的表面。这些表面由 SurfaceFlinger 合成,一个在另一个之上。 (默认情况下,ViewRoot 表面位于顶部,GLSurfaceView 表面位于底部。)

    由于您的所有视图都被绘制到 ViewRoot 的表面中,因此它们必须都位于 OpenGL 表面之上或 OpenGL 表面之下。

    如果您不想使用纹理,则唯一的选择是创建第三个表面,这次使用 SurfaceView 而不是 GLSurfaceView,在 GLSurfaceView 上方绘制文本。

    【讨论】:

    • 嗨,马修,非常感谢您的回复。我现在将尝试这种方法并让你知道。再次感谢您。
    • 嗨,我现在又面临一个问题。我有我设置 zorderontop(true) 的 glsurfaceview (因为我需要在普通视图之上的我的surfaceview)。我在滚动视图上有表面视图,在屏幕上我在屏幕顶部有一个仪表板布局。当我滚动glsurfaceview时,它正在glsurfaceview之上移动。你能帮帮我吗?
    • 您可能不想将 SurfaceView 放在 ScrollView 中。在绘图之前调用 canvas.translate 自己处理滚动。
    • 但在滚动中我不仅有我的 glview,我也有 listview。滚动中的其他视图在仪表板下方,但 glsurfaceview 通过移动仪表板布局的顶部来创建问题。
    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2013-01-10
    • 2022-08-16
    相关资源
    最近更新 更多