我的应用程序由图像背景组成(从后到前),然后是包含3D对象和前2个按钮的glSurfaceView。我希望GLSurfaceView的背景透明并看到背后的图像。
我尝试了两种解决方案,但没有一种方法令人满意:
mGLSurfaceView = new GLSurfaceView(mContext);
mGLSurfaceView.setEGLContextClientVersion(2);
mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
mGLSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
mGLSurfaceView.setZOrderOnTop(true);
mGLSurfaceView.setRenderer(mRenderer);
在这种情况下,我可以看到背景,但3D对象浮动在所有其他布局的顶部,有时隐藏按钮。
mGLSurfaceView = new GLSurfaceView(mContext);
mGLSurfaceView.setEGLContextClientVersion(2);
mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
mGLSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
mGLSurfaceView.setZOrderMediaOverlay(true);
mGLSurfaceView.setRenderer(mRenderer);
在这种情况下,我可以看到按钮,但GLSurfaceView不再透明,我看不到图像背景。 我已经解析了所有其他主题,但没有一个给我任何令人满意的答案。
答案 0 :(得分:1)
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);
由SO帖子给出: Android GLSurfaceView transparent background without setZOrderonTop 和原来的博客文章: How to set a transparent GLSurfaceView
答案 1 :(得分:0)
setZOrderOnTop()有效,但这意味着你不能在这个SurfaceView上放置任何图形,这是不幸的。