如何在Android视图之间添加GLSurfaceView?

时间:2012-08-24 10:11:46

标签: android android-layout glsurfaceview

我正在使用Android -Sandwich类型的特殊UI,GLSurfaceView上的一个小型GalleryView(带有透明区域)在背景视图(LinearLayout +一些小部件)之上。这就是我想要设置它的方式:

<User>

TOP View
---
图库视图 |
--- GLSurfaceView(带透明区域)
|
--- LinearLayout(带小部件)
BOTTOM查看

在常规模式下,GLSurfaceView在透明区域上有黑色背景,所以我看不到底层,但是当我使用setZOrderOnTop(true)时;我可以看到底层,但顶层(图库)也在Glsurface视图后面。如何在模式中完成所需的视图?

XML code dummy示例(使用AnalogClock而不是GalleryView):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#920000"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/LinearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right" >

        <AnalogClock
            android:id="@+id/analogClock2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <com.test.CustomGlView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/gl_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <AnalogClock
        android:id="@+id/Gallery_dummyview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:3)

你不能这样做。

GLSurfaceView的Surface与基于视图的UI位于单独的合成图层上。它可以在视图之上或在它们之下,但它不能显示在视图元素之间。

您可以使用TextureView(API 14+)代替。它有一个要渲染的Surface,但是由应用程序合成到View层,因此布局就像任何其他View一样。您需要为GLES提供自己的EGL设置和线程管理,而不是依赖于GLSurfaceView中的内容,但您可以在Grafika中找到示例。