我有一个处理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);
}
}
但在这种情况下:screet不会在任何模式下旋转(即使在全屏模式下也是如此,isFullscreen()
et为true)
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (isFullscreen) {
super.onConfigurationChanged(newConfig);
} else {
}
}
但是我得到了Super Not Called exception
或类似的东西(我在想,如果我在正常模式下不调用超级,它就不会旋转屏幕)
最后,我试过这个:
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (isFullscreen) {
super.onConfigurationChanged(newConfig);
} else {
newConfig.orientation = Configuration.ORIENTATION_PORTRAIT;
super.onConfigurationChanged(newConfig);
}
}
答案 0 :(得分:2)
当您切换全屏调用时,请不要在onConfigurationChanged中执行此操作
代码:
if(isFullscreen){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}