2014-06-19 172 views
0

我正在寫應用程序在其中我使用GLSurfaceView繪製顯示形狀。問題是我想暫停繪圖或停止繪圖並再次恢復它.GLSurfaceView setRenderer在生命週期中只調用一次的application.OnDrawFrame是GLSurfaceView級操作系統的被覆蓋的功能,我不能禁用it.So我應該怎麼去停止/暫停圖紙和恢復again.I正在嘗試繪製如下:停止OnDrawFrame的Android GLSurfaceView

mGLSurfaceView = new GLSurfaceView(mContext); 
mRelativeLayout.addView(mGLSurfaceView,mRelativeLayout.getLayoutParams()); 
mGLSurfaceView.setEGLContextClientVersion(2); 
mGLSurfaceView.setRenderer(new LessonFiveRenderer(mContext)); 

,我試圖暫停/停止如下:

mGLSurfaceView.onPause(); 
mGLSurfaceView.getHolder().getSurface().release(); 
mGLSurfaceView.setVisibility(View.INVISIBLE); 
mGLSurfaceView.destroyDrawingCache(); 
//mRelativeLayout.destroyDrawingCache(); 
mGLSurfaceView.invalidate(); 
mGLSurfaceView.clearAnimation(); 
mGLSurfaceView.postInvalidate(); 

mRelativeLayout.removeView(mGLSurfaceView); 
mRelativeLayout.destroyDrawingCache(); 
//mRelativeLayout.removeAllViewsInLayout(); 
mRelativeLayout.invalidate(); 

但問題是繪圖不斷髮生在後臺。我該如何去停止繪圖。

回答

1

GLSurfaceView可以連續繪製或按需繪製。您可以使用setRenderMode()方法更改模式。

如果您通過RENDERMODE_CONTINUOUSLY,您的繪圖方法將盡快調用,系統可以這樣做。 (這種「隊列填充」方式很快就會與設備刷新速率相匹配;請參閱this article。)如果您通過RENDERMODE_WHEN_DIRTY,則只有在您撥打requestRender()時纔會呈現。

您可以在Android Breakout中看到此示例。當遊戲成功或失敗時,GLSurfaceView將切換到骯髒時渲染模式。