【问题标题】:Make a SurfaceView transparent without setZOrderOnTop(true)在没有 setZOrderOnTop(true) 的情况下使 SurfaceView 透明
【发布时间】:2012-11-19 14:00:58
【问题描述】:

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

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

【问题讨论】:

  • 您需要什么?你想为你的表面视图添加背景,并在你的表面视图上添加另一个视图吗?

标签: java android layout


【解决方案1】:

设置支架像素格式为RGBA_8888,

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

getHolder().setFormat(PixelFormat.RGBA_8888);

【讨论】:

  • 对我不起作用,至少对 min3d lib 而言。对 OpenGL 版本有什么要求吗?
【解决方案2】:

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

【讨论】:

  • 你能给我看一段相同的代码吗,我用它作为:setZOrderMediaOverlay(true); SurfaceHolder 支架 = getHolder(); holder.addCallback(this); holder.setFormat(PixelFormat.TRANSLUCENT);但它并没有表现出任何东西,事实上它超越了另一个观点。当活动开始时,我可以看到我在表面上完成的工作,但突然被我的视线所覆盖。
  • 我为该函数调用添加了一些上下文。它在包含表面的活动的 onCreate 中。
  • 感谢您的帮助,让我试试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
相关资源
最近更新 更多