当屏幕旋转时,我希望什么也不改变。我的应用程序在首次加载时显示随机图像,旋转设备不应选择另一个随机图像。简单地说,我该如何停止这种行为?
当屏幕旋转时,我希望什么也不改变。我的应用程序在首次加载时显示随机图像,旋转设备不应选择另一个随机图像。简单地说,我该如何停止这种行为?
通常有三种方法可以实现此功能:
如一些答案所建议的那样,您可以区分活动是第一次创建还是从savedInstanceState
中恢复。这可以通过覆盖onSaveInstanceState
并检查onCreate
的参数来完成。
您可以通过在清单文件中的<activity>
标签中添加android:screenOrientation="portrait"
(或"landscape"
)来锁定活动在一个方向上。
您可以通过在<activity>
标签中指定android:configChanges="orientation|screenSize"
来告诉系统您要自行处理屏幕更改。这样,活动将不会重新创建,而是会收到回调(您可以忽略它,因为它对您没有用)。
个人而言,我会选择(3)。当然,如果将应用程序锁定在一个方向上对您来说没问题,您也可以选择(2)。
android:configChanges="orientation|screenSize"
属性,以避免屏幕旋转时发生重启。 - Pacerierandroid:configChanges="orientation|screenSize"
值更新您的第三个答案,因为很多人将您的答案视为主要答案! - radistaoandroid:configChanes="orientation"
) 只有在应用程序API级别为12或更低时才起作用。
在API级别13或以上,当方向改变时屏幕大小也会改变,因此这仍然会导致活动在方向改变时被销毁并重新启动。
只需像下面一样添加"screenSize"属性即可:<activity
android:name=".YourActivityName"
android:configChanges="orientation|screenSize">
</activity>
现在,当您更改方向时(并且屏幕大小发生变化),活动保持其状态,并调用onConfigurationChanged()
方法。这将在方向更改时保留屏幕上的任何内容(例如 Webview 中的网页)。
从此网站中了解到这一点:http://developer.android.com/guide/topics/manifest/activity-element.html
但是,这显然是一种不好的实践方式,请阅读下面有关处理运行时更改的链接:
http://developer.android.com/guide/topics/resources/runtime-changes.html
android:configChanges="orientation|screenSize"
- Vincent Ducastel你只需要打开 AndroidManifest.xml
文件,在你的活动标签中输入以下代码,就像上面有人提到的那样:
您只需要前往 AndroidManifest.xml
文件,并在您的活动标签内或内部键入此行代码,正如上面有人所说:
android:configChanges="orientation|screenSize"
那么,你会得到像这样的东西:
<activity android:name="ActivityMenu"
android:configChanges="orientation|screenSize">
</activity>
希望它能够正常工作!
<activity android:name="com.example.abc"
android:configChanges="orientation|screenSize"></activity>
在清单文件的活动选项卡中添加android:configChanges="orientation|screenSize"
即可。这样,当设备方向更改时,Activity就不会重新启动了。onSaveInstanceState()
和 onCreate()
。 - Marc Plano-Lesay我的经验告诉我,与其试图强行灌输非默认行为,不如妥善处理方向变化问题更佳。
在onSaveInstanceState()
中保存当前显示的图像,并在应用程序再次运行时通过onCreate()
正确地恢复它。
android:configChanges
,仅在最后一步使用。有关如何正确处理由配置更改引起的重启的更多信息,请阅读处理运行时更改。” - Marc Plano-Lesay这个解决方案是目前为止最好的。在您的清单文件中添加以下内容:
<activity
android:configChanges="keyboardHidden|orientation|screenSize"
android:name="your activity name"
android:label="@string/app_name"
android:screenOrientation="landscape">
</activity
在你的活动类中添加以下代码:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
//your code
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
//your code
}
}
在清单文件中为每个活动添加此内容。这将有所帮助。
android:configChanges = "orientation|keyboard|keyboardHidden|screenLayout|screenSize"
android:configChanges="keyboardHidden|orientation|screenSize"
。
AndroidManifest.xml
中。
<activity android:screenOrientation="landscape">
我的意思是,有一个活动标签,请将其添加为另一个参数。如果需要纵向方向,请将横向更改为纵向。希望这能帮到你。
android:configChanges="orientation|screenSize"
这段代码与Android设备屏幕方向和大小有关。
Screen.lockOrientation(this)
即可。它允许解锁清单无法完成的操作。 - caw