在OpenGL视图上添加一个按钮

时间:2012-09-07 10:16:03

标签: android button opengl-es

我租了一名程序员为我的公司开发基于Android的OpenGL应用程序。该应用程序做了一些相当复杂的东西,并根据通过意图(从我的其他应用程序)传递的坐标呈现3d管。我需要在他的OpenGL应用程序中添加一个按钮才能退出应用程序并返回原来的应用程序。我只涉及Java,并且不知道如何在不涉及布局时添加元素。我不希望按钮是基于OpenGL的,因为我对OpenGL一无所知,所以我宁愿在活动的顶部放置一个Android元素。

这就是他的创建例程。 (启动应用程序的意图传递数据。为了编译,我必须注释掉该代码并只是编写数据。)

    protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();
    //String data = intent.getStringExtra("data");                          
    //double radius = Double.parseDouble(intent.getStringExtra("radius"));                          
    //double width = Double.parseDouble(intent.getStringExtra("width"));                            
    String data = "254,0,90,2,254,0,90,2";
    double radius = 20;
    double width = 10;
    openGLTube3D = new OpenGLTube3D(this, data, radius, radius, width);
    setContentView(openGLTube3D);
}

他使用setContentView()和他的OpenGL类而不是XML文件,所以我不知道在哪里添加按钮。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

如果OpenGLTube3D是一个视图,那么我建议:

像往常一样创建一个XML文件,将framelayout作为根,但保留opengl视图。这应该包含您想要在OpenGL视图之上显示的任何按钮或小部件。

你会想要这样的东西(请原谅下面的任何语法错误,我是从内存中写的):

<FrameLayout
    android:id="@+id/myframelayout>
    <Button
      android:...
      android:...
      android:... />
</FrameLayout>

然后,在onCreate中,您希望将layout.xml设置为内容视图,然后您希望将OpenGL视图作为第一个索引插入到framelayout中(因此它将显示在按钮下方)

伪代码:

openGLTube3D = new OpenGLTube3D(this, data, radius, radius, width);    
FrameLayout frame = (FrameLayout)findViewById(R.id.myframelayout);
frame.addView(openGLTube3D, 0);

我认为这应该将OpenGL视图放在framelayout中定义的所有其他元素下面。