0

会社用に 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()XML ファイルの代わりに OpenGL クラスを使用しているため、ボタンを追加する場所がわかりません。

誰でも助けることができますか?

4

1 に答える 1

4

OpenGLTube3D がビューの場合、次のことをお勧めします。

フレームレイアウトをルートとして、通常のように XML ファイルを作成しますが、opengl ビューは除外します。これには、OpenGL ビューの上に表示するボタンまたはウィジェットが含まれている必要があります。

次のようなものが必要になります (以下の構文エラーを許してください。これは記憶から書いています)。

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

次に、onCreate で、layout.xml をコンテンツ ビューとして設定し、OpenGL ビューを最初のインデックスとしてフレームレイアウトに挿入します (ボタンの下に表示されるようにします)。

擬似コード:

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

これにより、フレームレイアウトで定義されている他のすべての要素の下に OpenGL ビューが配置されるはずです。

于 2012-09-07T17:10:14.933 に答える