2013-08-08 5 views
0

이미지를 텍스처로 렌더링하는 GLSurfaceView가 있습니다. GestureDetector를 GLSurfaceView에 연결했습니다. 사용자가 화면을 탭하면 GLSurfaceView 위에 선형 레이아웃을 표시하려고합니다.GlSurfaceView 위에 레이아웃이 사라지고 그 자체로 나타납니다

현재 사용자가 GLSurfaceView를 탭하면 선형 레이아웃이 표시되지만 약 2-3 초 만에 자체적으로 사라집니다. 가끔씩 화면이 1 초 간격으로 깜박입니다. 이 모든 것은 사용자의 개입없이 이루어집니다.

무슨 일이 일어나고 있는지 통찰력 있습니까? 여기에 내가 시도한 것과 유용한 정보가있다.

  1. 내 GLSurfaceView는 Render_When_Dirty 모드로 설정되고 난 사용자 후 onDrawFrame 방법에 통화가 없어야 도청 것을 보장했다. 메서드에 문을 로깅하여이 사실을 알 수 있습니다.
  2. 선형 레이아웃의 setVisibility (boolean) 메소드가 악의적으로 호출되지 않았 음을 확인했습니다.

다음은 GLSurfaceView를 만드는 방법에 대한 코드입니다.

glSurfaceView = new GLSurfaceView(context) { 
    public void surfaceDestroyed(SurfaceHolder holder) { 
     super.surfaceDestroyed(holder); 
     Logger.w("Surface Destroyed"); 

     if (sprite != null) { 
      // readerBitmap =sprite.bitmap; 
      time = sprite.time; 
     } 
     //glSurfaceView.setBackgroundColor(color.black); 

     if (myHandler != null) { 
      myHandler.sendEmptyMessage(9); 
     } 

    } 
}; 

gestureDetector = new GestureDetector(context, new MyGestureDetector()); 
glSurfaceView.setOnTouchListener(touchListener); 

// set our renderer to be the main renderer with 
sprite = new GlRenderer(context,Global.PICTURES.get(Global.currentPictureIndex),myHandler, tempTime); 
glSurfaceView.setRenderer(sprite); 
glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 

TextView tv = (TextView)findViewById(R.id.customTextView1); 
tv.setVisibility(View.GONE); 

//add to the view 
mainLayout.removeView(glSurfaceView); 
mainLayout.addView(glSurfaceView, 0); 

P. Android 4.0에 있음

답변

0

렌더 모드를 RENDERMODE_WHEN_DIRTY (으)로 설정하면 GLSurfaceView가 자체를 다시 그려 지도록 GLSurfaceView를 요청하거나 무효화해야합니다. 일반적으로 렌더링을 요청하는 루프가 포함 된 스레드로 수행됩니다. 그거하고 있니?

setRenderMode 행을 주석 처리하고 기본값이 연속적으로 그려 지므로 원하는 결과를 얻었는지 확인하십시오.

희망이 있습니다.

관련 문제