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