0

Androidを使用してレイアウト内にglSurfaceView埋め込みを行いました..の左側にいくつかのボタンがありますglSurfaceView. そのボタンをクリックすると、前のボタンの上に新しいボタンglSurfaceViewが作成されます。

どうすればそれができますか?これcom.example.activity.MyGlSurfaceViewは常に一定であるため、動的に変更するにはどうすればよいですか?

 <Linearlayout .....>

  <include android:id="@+id/title_btn"
     android:layout_width="0dp"
     android:layout_height="match_parent"
     android:layout_weight="1"
    layout="@layout/option_button"/>

   <com.example.activity.MyGlSurfaceView
         android:id="@+id/gl_surface_view"
   android:layout_width="0dp"
        android:layout_height="wrap_content" 
   android:layout_weight="8"/> 
       </Linearlayout>
4

1 に答える 1

0

それがあなたの質問に対する答えになることを願っています

MyGlSurfaceView sv = (MyGlSurfaceView)findViewById(R.id.gl_surface_view);

yourButton.setOnClickListener(new View.OnClickListener(){
    public void onClick(View v){
        sv = new MySurfaceView(yourContext);
    }
});

これが私の最初の回答です。XD

追加した:

public class MainActivity extends Activity{

    MyGLSurfaceView myGl;
    Button button;
    Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context= this;
        setContentView(R.layout.main_activity);
        myGl = (MyGLSurfaceView)findViewById(R.id.main_gl);
        button = (Button)findViewById(R.id.main_button);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                myGl = new MyGLSurfaceView(context);
            }
        });
    }
}



public class MyGLSurfaceView extends GLSurfaceView {

    public MyGLSurfaceView(Context context) {
        super(context);
        this.setRenderer(new MyRenderer());
    }

    public MyGLSurfaceView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.setRenderer(new MyRenderer());
    }   
    static class MyRenderer implements GLSurfaceView.Renderer{

        public void onSurfaceChanged(GL10 gl, int w, int h) {
            gl.glViewport(0, 0, w, h);
        }

        public void onDrawFrame(GL10 gl) {
            gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        }

        @Override
        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
            // TODO Auto-generated method stub          
        }


    }
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/main_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <com.renderer.test.MyGLSurfaceView
        android:id="@+id/main_gl"
        android:layout_width="300dp"
        android:layout_height="200dp" />

</LinearLayout>

これがあなたのケースに適しているかどうかはわかりませんが、私の電話ではエラーになりません.

于 2013-01-28T09:25:56.093 に答える