按钮和GLSurfaceView

Mar*_*son 7 android button glsurfaceview

我有一个GLSurfaceView,我在其中使用OpenGL显示一些动画.

我现在想在此视图中添加一个按钮.这是如何完成的?

可以在不涉及xml布局的情况下完成吗?

小智 18

您可以手动构建视图并将其添加到活动的内容视图中.在GLSurfaceView上执行setContentView或通过XML布局后,在Activity中的onCreate方法中,您可以执行以下操作,在左上角的GLSurfaceView顶部添加一个按钮:

 Button b = new Button(this);
 b.setText("Hello World");
 this.addContentView(b,
            new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Run Code Online (Sandbox Code Playgroud)

如果您希望按钮位于屏幕上的其他位置,则需要将其添加到布局中,然后将该布局添加到内容视图中.要拥有位于屏幕中心的按钮,您可以执行以下操作:

LinearLayout ll = new LinearLayout(this);
Button b = new Button(this);
b.setText("hello world");
ll.addView(b);
ll.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
this.addContentView(ll,
            new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
Run Code Online (Sandbox Code Playgroud)

如果你想要屏幕底部的按钮,你可以使用Gravity.BOTTOM而不是Gravity.CENTER_VERTICAL等.

如果您的GLSurfaceView正在拦截触摸,或者您的按钮不会接收触摸事件,请确保在触摸事件方法中调用return super.onTouch ....