旋转屏幕时,我的应用程序无法正常工作

时间:2018-02-01 04:02:58

标签: android screen-rotation

我正在android studio上创建一个应用程序。该应用程序工作正常但每当我旋转屏幕时,布局都在变化,屏幕上的项目会重叠,有时应用程序会重新启动。 有哪些可能的解决方案?阻止屏幕旋转是一个很好的选择吗?请帮忙。提前谢谢。

5 个答案:

答案 0 :(得分:0)

如果您在键盘中遇到任何问题,则需要在AndroidMenifest.xml中设置方向。使用keyboardHidden属性。

答案 1 :(得分:0)

您可以将活动的屏幕方向设置为纵向,这样您的活动将永远不会旋转,但如果您想支持横向版本,那么您还必须创建横向布局并将布局放在layout-landscape文件夹中,但是你也必须处理你的数据。

选择是你的

答案 2 :(得分:0)

您可以阻止在方向更改时重新创建活动。只需将它添加到Manifest文件中的活动标记中即可。

<activity
    android:name=".YOUR_ACTIVITY_NAME"
    android:configChanges="keyboardHidden|orientation|screenSize" />

答案 3 :(得分:0)

Android Activites在您旋转设备时从头开始。所以你的活动生命周期方法就像

  

onCreate(),onStart(),onResume()

将再次被召唤。 有两种可能的解决方案,第一种是Rob在这里。

<activity
android:name=".ACTIVITY"
android:configChanges="keyboardHidden|orientation|screenSize" />

这将自行处理方向更改。

另一种解决方案是在不同的布局文件夹中创建不同的布局类型。文件夹将是

  

layout-land,layout-sw600dp-land(适用于7英寸平板电脑)和layout-sw720dp-land(适用于10英寸平板电脑)

因此,当您旋转设备时,系统会自动对此文件夹中的布局进行充气。会有一些情况,例如您希望保留活动的当前状态,为此请参阅此link

答案 4 :(得分:0)

不,防止定位是风景是一个好的解决方案。许多平板电脑仅限横向播放,您的应用无法在这些平板电脑上正确显示。

正确的做法是在onSaveInstanceState()中保存您的状态,然后在重新创建活动时在onCreate()中读取它(savedInstanceState变量不为空)。为此,您要保存的数据必须为SerializableParcelable

如果您想要保存不可序列化的数据,或者您在后台运行某些内容,则可以Fragment使用setRetainInstance(true);而不使用布局。请参阅this链接。

视图将再次创建,是的,但您将设置保存的值,使其看起来与旋转前一样。