在没有setZOrderOnTop(true)的情况下使SurfaceView透明

我有一个RelativeLayout,它包含一个自定义的SurfaceView和其他必须绘制在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);
链接地址: http://www.djcxy.com/p/11449.html

上一篇: Make a SurfaceView transparent without setZOrderOnTop(true)

下一篇: update on duplicate key update