我有一个处理 2 种显示模式的活动:
- 正常模式:屏幕不应旋转,始终处于纵向模式。
- 全屏模式:屏幕可以是纵向或横向的
我只有 1 项活动来处理 2 种模式:
- 布尔变量
isFullscreen()
,指示Activity
处于全屏模式或正常模式。 changeMode()
调用setContentView()
以将 XML 布局适当地切换到当前模式- 在清单文件中,我必须
android:configChanges="screenSize|orientation"
让Activity
句柄配置更改 - 覆盖方法
onConfigurationChanged()
。
我试过这个:
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (isFullscreen) {
super.onConfigurationChanged(newConfig);
} else {
super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
但在这种情况下:屏幕不会在任何模式下旋转(即使在全屏模式下,isFullscreen()
et 为 true)
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (isFullscreen) {
super.onConfigurationChanged(newConfig);
} else {
}
}
但是我得到了Super Not Called exception
或类似的东西(我在想如果我在正常模式下不调用 super ,它就不会旋转屏幕)
最后,我试过这个:
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (isFullscreen) {
super.onConfigurationChanged(newConfig);
} else {
newConfig.orientation = Configuration.ORIENTATION_PORTRAIT;
super.onConfigurationChanged(newConfig);
}
}