2

MediaPlayerSurfaceView을 사용하여 동영상을 표시했습니다. 이제 동영상 위에 큐브를 렌더링하기 위해 MediaPlayertoGlSurfaceView을 추가하려고합니다. 상대 레이아웃을 사용하고 있습니다. 그러나 두 작업을 구분할 수는 있지만 SurfaceViewGlSurfaceView을 넣을 수는 없습니다. 그것은 단순히 큐브에 사용하는 OpenGL 코드를 렌더링하지 않습니다. 어떤 사람이 도움을 줄 수 있습니까?Android GLSurfaceView over MediaPlayer-SurfaceView

_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); 

답변

2

해결을 : mPreview = 새로운 서피스 뷰 SurfaceView (이); 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);