我现在在OpenGL应用程序(游戏)上工作,该应用程序仅在景观模式下工作。在Android 6上,我遇到了一个问题,即在最小化和还原应用程序后,半屏幕变为游戏正常屏幕,但在肖像模式下,在屏幕的另一半上,一些随机垃圾来自GPU内存。
我应该怎么做才能摆脱这种?
在AndroidManifest活动中
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="sensorLandscape"
在MainActivity类中:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen for landscape and portrait and set landscape mode always
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
}
好吧,我发现了奇怪的事情。暂停/还原应用程序时,将OS发送3次的ONSURFACECHANG通知:
onSurfaceChanged(1024,768)
onSurfaceChanged(786,1024) << notice wrong dimensions!
onSurfaceChanged(1024,768)
在清单(Sensorlandscape或Landscape)中清楚地指定了
Android,也以错误的尺寸发送了冲浪的通知。因此,我只是不会渲染任何内容,直到收到有适当尺寸(宽度>高)的效果。并不完美,但可以正常工作。