我正在使用SurfaceView和ndk+openGL,当按下模拟器的屏幕旋转按钮时,我收到了来自SurfaceHolder.Callback的SurfaceChanged事件,然后我通过处理程序发布了一个重绘消息,处理程序通过JNI本机代码使用新的显示指标重新绘制了屏幕,但显示被破坏了,如图所示。
我确信在按下旋转按钮之后和屏幕旋转完成之前,原生OpenGL绘制代码已经绘制了一帧,但不知道显示中断的原因。
我对android不是很熟悉,有人能帮我一下吗?谢谢。
编辑:当我做一些触摸事件来触发新的帧时,显示被修复了。所以我在想是否有一个旋转完成事件,这样我就可以强制绘制一帧来解决这个问题。

发布于 2020-04-28 12:12:02
问题解决了。
覆盖SurfaceHolder.Callback2的surfaceRedrawNeeded方法,该方法将在rotate完成后调用。
https://stackoverflow.com/questions/61460980
复制相似问题