作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的应用程序由(从后到前)图像背景组成,然后是包含 3D 对象的 glSurfaceView 以及位于顶部的 2 个按钮。我希望 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 不再透明并且我看不到图像背景。我已经分析了所有其他主题,但没有一个给我满意的答案。
最佳答案
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 post 给出: Android GLSurfaceView transparent background without setZOrderonTop和原始博客文章: How to set a transparent GLSurfaceView
关于android - 如何将 View 放在具有透明背景的 glSurfaceView 之上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20247397/
我是一名优秀的程序员,十分优秀!