在Android中更改屏幕方向而不重新加载活动
我想在运行Android应用程序时通过以下代码行以编程方式更改方向:在Android中更改屏幕方向而不重新加载活动,android,screen-orientation,Android,Screen Orientation,我想在运行Android应用程序时通过以下代码行以编程方式更改方向: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 到目前为止,它们还可以工作,但主要问题是,当屏幕方向改变时,整个活动都会重新加载,我不希望这样。可能吗?谢谢 编辑:好的,等我找到我缺少的东
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
到目前为止,它们还可以工作,但主要问题是,当屏幕方向改变时,整个活动都会重新加载,我不希望这样。可能吗?谢谢
编辑:好的,等我找到我缺少的东西后。我还必须在configChanges属性中包含“屏幕大小”,因此
android:configChanges="orientation|screenSize"
解决了整个问题。您需要覆盖onSaveInstanceState(Bundle savedInstanceState)并将要更改的应用程序状态值写入AndroidManifest文件add
android:configChanges=“orientation”
中的Bundle参数
在活动中使用OnConfiguration更改重写方法。您是否希望在方向更改中处理任务。此处回答:
加:
android:configChanges=“orientation”
给你的androidmanifest
见:
请参见@luisfer的编辑。针对安卓3.2及以上版本,您需要两者
android:configChanges="orientation|screenSize"
调用此方法并设置清单文件
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();
}
}
我想你应该看看这个答案中的第三个选项。我相信这就是PhoneGap处理方向变化的方式。你可以旋转你的活动/片段视图。检查这个:谢谢,但它仍然不起作用。可能是因为我在活动中使用了Phonegap/HTML5吗?谢谢,谢谢,但还是不行。可能是因为我在活动中使用了Phonegap/HTML5吗?谢谢。@Rajsah需要更多的代码吗?你看过问题了吗?标题如何?+1,这是正确的答案=>他所问的是不可能的,只要有这个解决方案,他就可以做他想做的事情,只有使用13以上的API android:configChanges=“orientation | screenSize”这也改变了我在导航堆栈方面的所有问题。谢谢你,伙计