我希望在运行我的Android应用程序时以编程方式更改方向,并使用以下代码行:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
他们到目前为止工作,但主要问题是当屏幕方向改变时重新加载整个活动,我不希望这样。可能吗?感谢。
编辑:好的,在我发现我失踪之后。我必须在configChanges属性中包含“screenSize”,所以
android:configChanges="orientation|screenSize"
解决了整个事情。
答案 0 :(得分:27)
请参阅@luisfer的编辑。对于Android 3.2及更高版本的定位,您需要两个
android:configChanges="orientation|screenSize"
http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange
答案 1 :(得分:4)
您需要覆盖onSaveInstanceState(Bundle savedInstanceState)并将要更改的应用程序状态值写入Bundle参数
答案 2 :(得分:1)
在AndroidManifest文件中,为要处理此方向的活动添加android:configChanges="orientation"
在活动中使用onConfigurationChange覆盖方法。做你想要在方向改变时处理的任务。
答案 3 :(得分:1)
这里有回答:
Android, how to not destroy the activity when I rotate the device?
添加:
android:configChanges="orientation"
到你的androidmanifest。
请参阅:
http://developer.android.com/guide/topics/manifest/activity-element.html#config
答案 4 :(得分:1)
调用此方法并设置清单文件
android:configChanges="orientation|screenSize|keyboardHidden"
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}