我正在使用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>
答案 0 :(得分:3)
你不能这样做。
GLSurfaceView的Surface与基于视图的UI位于单独的合成图层上。它可以在视图之上或在它们之下,但它不能显示在视图元素之间。
您可以使用TextureView(API 14+)代替。它有一个要渲染的Surface,但是由应用程序合成到View层,因此布局就像任何其他View一样。您需要为GLES提供自己的EGL设置和线程管理,而不是依赖于GLSurfaceView中的内容,但您可以在Grafika中找到示例。