gpt4 book ai didi

Android 应用程序方向更改重新启动 Activity

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:52 25 4
gpt4 key购买 nike

我有一个 Activity ,只要方向改变,它就会重新启动。我已经编写了代码来防止 Activity 在 list 文件中的方向发生变化时重新启动,如下所示:

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.sample.appname.MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

在上面的代码 fragment 中,android:configChanges="orientation|keyboardHidden" 应该为我完成工作,但 Activity 仍在重新启动。请让我知道如何更正它。

最佳答案

实际上,您不应该阻止 Activity 重新启动。出于多种原因,有必要在旋转更改后重新创建 Activity 。其中之一是必须扩大布局以处理更改的屏幕尺寸和类似的事情(很容易想象布局在纵向模式下与在横向模式下完全不同)。但是,有一种方法可以告诉系统您自己处理屏幕变化。因此,更改 list 中的行

android:configChanges="orientation|keyboardHidden"

android:configChanges="orientation|screenSize"

Activity 将不会被重新创建。您将通过 onConfigurationChanged() 收到回调方法,这样你就可以在方向改变时做一些事情。如果您不想在配置更改时执行任何操作,请不要覆盖 Activity 中的 onConfigurationMethod()。阅读this section in the Android Developers API Guide获取更多信息。

我从 this answer 得到这个.答案中还有两种方法,但我认为我上面描述的方法最适合您的情况。

编辑: 也许您还必须将 keyboard|keyboardHidden 添加到 android:configChanges 属性,如 this answer 中所述


编辑#2:如果您想检索设备的当前方向,您可以调用

Activity.getResources().getConfiguration().orientation

这将返回常量 ORIENTATION_PORTRAITORIENTATION_LANDSCAPE

如果您对精确的旋转角度感兴趣,请使用

int rotation =  getWindowManager().getDefaultDisplay().getRotation();

并使用类似 switch case 的东西来实现差异化 here .

确定设备旋转的第三种方法是getRequestedOrientation(),它将返回the documentation 中定义的常量。

关于Android 应用程序方向更改重新启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36239142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com