我有一个包含自定义 SurfaceView 和其他必须在 SurfaceView 上绘制的元素的 RelativeLayout。我还需要 SurfaceView 是透明的。我试过这个答案:如何使surfaceview透明。但是使用 setZOrderOnTop(true) 时,RelativeLayout 中 SurfaceView 上的其他元素显示在 Surface 上方(如果表面有油漆,则部分隐藏)。
我怎么解决这个问题?谢谢
我有一个包含自定义 SurfaceView 和其他必须在 SurfaceView 上绘制的元素的 RelativeLayout。我还需要 SurfaceView 是透明的。我试过这个答案:如何使surfaceview透明。但是使用 setZOrderOnTop(true) 时,RelativeLayout 中 SurfaceView 上的其他元素显示在 Surface 上方(如果表面有油漆,则部分隐藏)。
我怎么解决这个问题?谢谢
将持有者像素格式设置为 RGBA_8888,
sv.setZOrderOnTop(true); //very much necessary
getHolder().setFormat(PixelFormat.RGBA_8888);
我用setZOrderMediaOverlay(true)
代替成功了setZOrderOnTop(true)
。它允许 OpenGL SurfaceView 下方和上方的视图。
这是在上下文中:
GLSurfaceView glview = (GLSurfaceView)findViewById(R.id.surface);
glview.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
glview.getHolder().setFormat(PixelFormat.RGBA_8888);
glview.setZOrderMediaOverlay(true);
glview.setEGLContextClientVersion(2);