停止Android GLSurfaceView的OnDrawFrame

时间:2014-06-19 15:39:08

标签: android surfaceview

我正在编写我正在使用GLSurfaceView在显示器上绘制形状的应用程序。问题是我想暂停绘图或停止绘图并重新恢复它.GLSurfaceView setRenderer仅在应用程序的生命周期内调用一次.OnDrawFrame是覆盖GLSurfaceView类os的功能我不能禁用它。所以我应该停止/暂停绘图并重新恢复。我想绘制如下:

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 个答案:

答案 0 :(得分:1)

GLSurfaceView可以连续或按需绘制。您可以使用setRenderMode()方法更改模式。

如果您通过RENDERMODE_CONTINUOUSLY,系统可以尽快调用您的draw方法。 (此“队列填充”方法快速确定以匹配设备刷新率;请参阅this article。)如果您通过RENDERMODE_WHEN_DIRTY,则只有在您致电requestRender()时才会呈现。

您可以在Android Breakout中看到相关示例。当游戏获胜或失败时,GLSurfaceView将切换为渲染时脏模式。