如何在Android上更改方向时避免重新启动活动

chi*_*rag 60 android screen rotation

我正在创建一个Android应用程序,我在画布上绘制视图.当设备的方向改变时,活动将重新开始.我不想要它.

当方向发生变化时,如何避免重新启动活动?

Mik*_*ike 87

有各种方法可以做到这一点,但正如这里给出的,使用

android:configChanges="keyboardHidden|orientation|screenSize"
Run Code Online (Sandbox Code Playgroud)

根据需要,允许您改为监听配置更改.然后,您可以通过覆盖onConfigurationChanged和调用来响应这些更改setContentView.

这就是我一直这样做的方式,但我有兴趣了解其他人的想法.

  • 这个有用,screenSize为我做了. (4认同)

Vik*_*kas 18

在AndroidManifest.xml中定义您的活动,如下所示:

   <activity
        android:name="com.name.SampleActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:icon="@drawable/sample_icon"
        android:label="@string/sample_title"
        android:screenOrientation="portrait" >
    </activity>
Run Code Online (Sandbox Code Playgroud)

  • 这是误导性的。`android:screenOrientation="portrait"` 将始终强制执行纵向屏幕方向。不要包括这一行。 (3认同)

nin*_*nse 11

检查您android:configChanges="orientation"在活动上写的Android清单文件.

  • 请注意,在大多数情况下,这不是您想要做的。对于大多数应用程序,正确的方法是在 onSaveInstanceState() 中记下您的配置,并在配置更改后将其恢复。 (2认同)

Ava*_*i Y 7

加入android:configChanges="keyboardHidden|orientation"你的activity


Oub*_*aan 7

我试着android:configChanges="keyboardHidden|orientation|screenSize"用活动标签写,但是没有用.

我尝试了很多方法,但是在我android:configChanges="keyboardHidden|orientation|screenSize"所有应用程序活动添加之前没有任何效果,并且它完美运行.


Gri*_*ace 6

我建议使用Fragments.您可以简单地setRetainInstance(true)用来通知您要保留片段.


Tus*_*tel 6

对于xamarin用户,

要避免Android中的方向更改重新启动应用程序,请添加
xamarin到所有Activity类的Activity属性.例如,下面是我的演示代码

ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize
Run Code Online (Sandbox Code Playgroud)