不使用setZOrderOnTop使SurfaceView透明(true)

时间:2012-11-19 14:00:58

标签: java android layout

我有一个RelativeLayout,其中包含一个自定义SurfaceView和其他必须在SurfaceView上绘制的元素。我还需要SurfaceView是透明的。 我试过这个答案:how to make surfaceview transparent。但是使用setZOrderOnTop(true),RelativeLayout中SurfaceView上的其他元素显示在Surface上方(如果表面有油漆,则部分隐藏)。

我该如何解决这个问题?感谢

2 个答案:

答案 0 :(得分:3)

将持有人像素格式设置为RGBA_8888,

sv.setZOrderOnTop(true);    //very much necessary

getHolder().setFormat(PixelFormat.RGBA_8888);

答案 1 :(得分:0)

我使用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);