6

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

<User>

顶视图
---画廊视图
|
---GLSurfaceView(带透明区域)
|
---LinearLayout(with widgets)
BOTTOM View

在常规模式下,GLSurfaceView 在透明区域有黑色背景,所以我看不到底层,但是当我使用 setZOrderOnTop(true); 我可以看到底层,但顶层(画廊)也位于 Glsurface 视图的后面。我怎样才能像在模式中那样完成所需的视图?

XML 代码虚拟示例(使用 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>
4

1 回答 1

3

你不能这样做。

GLSurfaceView 的 Surface 位于与基于 View 的 UI 不同的合成层上。它可以在视图之上或之下,但它不能夹在视图元素之间。

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

于 2015-07-06T17:35:04.857 回答