Android GLSurfaceView透明背景没有setZOrderonTop

对不起我的英语不好。

我的工作是基于https://github.com/harism/android_page_curl/

经过几个小时的研究,我发现了一些解决scheme,但并不是针对我在应用程序中遇到的所有问题。 我有一些GLSurfaceView的麻烦。 我有一个关于一个relativeLayout,一个GLSurfaceView和一个覆盖的背景。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/background" android:layout_width="match_parent" android:background="@layout/backgroundrepeat" android:layout_height="match_parent"> <com.m2y.foxprez.view.CurlView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/openglview" android:layout_width="match_parent" android:layout_height="match_parent"/> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/overlay" android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout> 

当我启动我的观点时:

 setEGLConfigChooser(8,8,8,8,16,0); setRenderer(renderer); getHolder().setFormat(PixelFormat.TRANSLUCENT); setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); setZOrderMediaOverlay(true); 

在我的渲染器中:

 public void onSurfaceCreated(GL10 gl, EGLConfig config) { gl.glClearColor(0f, 0f, 0f, 0f); gl.glShadeModel(GL10.GL_SMOOTH); gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); gl.glHint(GL10.GL_LINE_SMOOTH_HINT, GL10.GL_NICEST); gl.glHint(GL10.GL_POLYGON_SMOOTH_HINT, GL10.GL_NICEST); gl.glEnable(GL10.GL_LINE_SMOOTH); gl.glDisable(GL10.GL_DEPTH_TEST); gl.glDisable(GL10.GL_CULL_FACE); } public synchronized void onDrawFrame(GL10 gl) { gl.glClearColor(0f,0f,0f,0f); gl.glClear(GL10.GL_COLOR_BUFFER_BIT); gl.glLoadIdentity(); } 

经过多次研究,我目前被这个结果封锁了:
用setZOrderOnTop,我有背景,但叠加在视图之下。
与setZOrderMediaOverlay,我有覆盖,但背景是黑色的。

有人可以帮助我吗?

Solutions Collecting From Web of "Android GLSurfaceView透明背景没有setZOrderonTop"

这对我工作:

 final GLSurfaceView glView = (GLSurfaceView) findViewById(R.id.glView); glView.setZOrderOnTop(true); glView.setEGLConfigChooser(8, 8, 8, 8, 16, 0); glView.getHolder().setFormat(PixelFormat.RGBA_8888); glView.setRenderer(new MyRenderer()); glView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 

在这里find: http : //andrewhague.wordpress.com/2011/05/24/how-to-set-a-transparent-glsurfaceview/

我想用GLSurfaceView顶部的视图来完成同样的事情,我没有find没有限制的解决scheme。 首先,glView.setZOrderOnTop(true)给出了正确的透明背景,但是无论sorting视图的顺序如何,视图总是在顶部。 其次,如果没有ZOrderOnTop,则视图层次结构将保持不变,但GLSurface背景为黑色或呈现器中使用glClearColor(红色,绿色,蓝色,alpha)设置的颜色。 不幸的是,除非使用这个方法,否则alpha参数不起作用

 android:windowIsTranslucent="true" 

而这个问题就是你可能不想在操作系统视图中打一个洞。 应该有一种方法可以使用openGL更轻松地完成这个animationUI。 我没有find解决scheme,search这个网站和其他人。