2

ビデオを表示するためにをMediaPlayer使用しています。そして今、ビデオの上に立方体をレンダリングするために を追加しSurfaceViewたいと思います。相対レイアウトを使用しています。両方の作業を別々に行うことはできますが、 を の上に置くことはできません。キューブに使用する OpenGL コードがレンダリングされないだけです。誰かが助けることができますか?GlSurfaceViewMediaPlayertoGlSurfaceViewSurfaceView

   _cube = new CubeGLView(this);
   _cube.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
   _cube.setId(10002);
   _cube.getHolder().setFormat(PixelFormat.TRANSLUCENT);
   _cube.getHolder().setFormat(PixelFormat.RGBA_8888);
   //_cube.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);

   _render = new GlRenderer(_cube.getContext());
   _cube.setRenderer(_render);
   _cube.setVisibility(View.GONE);

   RelativeLayout layout = new RelativeLayout(this);
   RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
   RelativeLayout.LayoutParams.MATCH_PARENT,
   RelativeLayout.LayoutParams.MATCH_PARENT);

   RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
   RelativeLayout.LayoutParams.WRAP_CONTENT,
   RelativeLayout.LayoutParams.WRAP_CONTENT);
   lp.addRule(RelativeLayout.CENTER_IN_PARENT);

   mPreview.setLayoutParams(lp);
   _cube.setLayoutParams(lp);

   layout.addView(_cube);
   layout.addView(mPreview);

   setContentView(layout, rlp);
4

1 に答える 1

2

それを解決します:mPreview = new SurfaceView(this); mPreview.setId(10001);

    mPreview.setOnClickListener(this);
    mPreview.setClickable(true);

    holder = mPreview.getHolder();
    holder.addCallback(this);
    holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    extras = getIntent().getExtras();


    _cube = new CubeGLView(this);
    _cube.setEGLConfigChooser(8, 8, 8, 8, 16, 0);

    _cube.setId(10002);
    _cube.getHolder().setFormat(PixelFormat.TRANSLUCENT);
    _cube.getHolder().setFormat(PixelFormat.RGBA_8888);


    _render = new GlRenderer(_cube.getContext());
    _cube.setRenderer(_render);



    RelativeLayout layout = new RelativeLayout(this);
    RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT);

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT);
    lp.addRule(RelativeLayout.CENTER_IN_PARENT);

    mPreview.setLayoutParams(lp);

    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.setMargins(100,10, 0,0);
    _cube.setLayoutParams(params);

    DataManager datamanager = DataManager.getInstance();

    if (!datamanager.isHasalreadyview()){
        Log.d(TAG, "onCreate icicle == null");
        layout.addView(_cube);
        layout.addView(mPreview);
        datamanager.setHasalreadyview(true);
    }else{
        Log.d(TAG, "onCreate icicle != null");
        layout.addView(mPreview);
        layout.addView(_cube);
    }


    setContentView(layout, rlp);
于 2012-06-04T12:37:49.820 に答える