是否可以在GLSurfaceView或SurfaceView内的有界区域内绘制任何视图?
目前我的GLSurfaceView填充了位图纹理。
我想实现类似的目标
+---------------------------------+
| |
| GLSurfaceView |
| |
| +-------------+ |
| |WhateverView/| |
| | Layout/ | |
| |ViewGroup | |
| +-------------+ |
| |
+---------------------------------+
我尝试使用FrameLayout在GLSurfaceview的顶部绘制View,但这不是我想要实现的目标。
感谢。
答案 0 :(得分:1)
我有同样的问题。我在下面使用了这个技巧。
使用AbsoluteLayout
重叠GLSurfaceView
和其他View
。
AbsouluteLayout -+-- GLSurfaceView
+-- View
将GLSurfaceView
设为透明。
mGlSurfaceView.setEGLContextClientVersion(2);
mGlSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
mGlSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
mGlSurfaceView.setRenderer(new GLES20TriangleRenderer(this));
mGlSurfaceView.setZOrderOnTop(true);
添加一个打孔。不要在GLSurfaceView
中渲染重叠区域。附加到OnTouchListener
的{{1}}在重叠区域中返回false,以将事件传播到其他视图。
PS:抱歉我的英语很差。
答案 1 :(得分:0)
尝试创建自己的类扩展GLSurfaceView,覆盖方法draw(Canvas)并使用view / viewgroup的方法draw(Canvas)在其中绘制视图。它将是这样的:
public class MyGLSurfaceView extends GLSurfaceView
{
private View myView;
@Override
protected void onDraw(Canvas canvas) {
// Draw something below your view
// Translate, rotate your canvas as you want
myView.draw(canvas);
canvas.restore(); // If you have translated or rotated the canvas
// Draw something above your view
}
}
答案 2 :(得分:0)
是的,您可以,因为GLSurfaceView是View之一,您可以将其绑定到具有其他视图的布局中。但请记住将setZOrderOnTop()设置为false。
请记住,Android 2.x中的OpenGL不如4.x中的那么好(这意味着你必须解决2.x中发生的一些问题)