旋转屏幕时,我根本不需要改变任何东西.我的应用程序显示时,第一次加载和旋转设备应随机图像不选择另一随机图像.我怎样(简单地)让这种行为停止?
通常有三种方法可以做到这一点:
正如一些建议的答案,您可以区分第一次创建和恢复活动的情况savedInstanceState
.这是通过覆盖onSaveInstanceState
和检查参数来完成的onCreate
.
您可以通过在清单中添加android:screenOrientation="portrait"
(或"landscape"
)来将活动锁定在一个方向上
.
您可以通过android:configChanges="orientation|screenSize"
在
标记中指定来告诉系统您打算自己处理屏幕更改.这样就不会重新创建活动,而是会收到一个回调(你可以忽略它,因为它对你没用).
就我个人而言(3).当然,如果将应用程序锁定到其中一个方向对您来说没问题,您也可以使用(2).
Xion的答案很接近,但android:configChanes="orientation"
除非应用程序的API级别为12或更低,否则#3()将无效.
在API级别13或更高级别,当方向更改时,屏幕大小会更改,因此这仍会导致活动在方向更改时被销毁并启动.
只需添加"screenSize"属性,就像我在下面所做的那样:
现在,当您更改方向(和屏幕大小更改)时,活动将保持其状态并被onConfigurationChanged()
调用.当方向改变时,这将保留屏幕上的任何内容(即:Webview中的网页).
从这个网站了解到这一点:http: //developer.android.com/guide/topics/manifest/activity-element.html
此外,这显然是一个不好的做法,请阅读以下有关处理运行时更改的链接:
http://developer.android.com/guide/topics/resources/runtime-changes.html
你只需要去AndroidManifest.xml
内部或你的活动标签,你必须输入这行代码作为那里的人说:
android:configChanges="orientation|screenSize"
所以,你会有这样的事情:
希望它有效!
只需添加android:configChanges="orientation|screenSize"
清单文件的活动选项卡即可.
因此,方向更改时,Activity不会重新启动.
根据我的经验,实际上更好地处理方向更改而不是试图窃取非默认行为.
您应该保存当前正在显示的图像,onSaveInstanceState()
并在应用程序onCreate()
再次运行时正确还原.
这个解决方案是迄今为止最好的解决方案.在您的清单文件中添加
在您的活动类中添加以下代码
@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 } }