【问题标题】:Handling Screen orientation in android在android中处理屏幕方向
【发布时间】:2013-04-06 08:05:45
【问题描述】:

此应用需要纵向和横向。在这里,我在资源文件夹中为横向创建“layout-land”文件夹。当我进行定向活动时,正在从“layout-land”获取 XML,但活动正在重新启动。

所以为了避免重启,在清单中我使用了以下权限:

<android:configChanges="keyboardHidden|orientation|screenSize">

当我使用上述权限时,活动并未重新启动,但无法从“layout-land”文件夹中获取 XML。

这里我需要:
1。避免重新启动活动
2。进行活动以从“layout-land”文件夹中获取 XML。 我是android的新手。请在这方面帮助我。在此先感谢。

【问题讨论】:

  • 为什么要避免“重启”活动?
  • 使用它不会在旋转手机时重新启动您的活动。 android:configChanges="keyboardHidden|orientation"

标签: android screen-orientation


【解决方案1】:

这就是 Android 的工作方式。您需要选择以下三个选项之一:

  1. 对纵向和横向使用完全相同的布局;然后,您可以像上面一样使用configChanges。即使您确实有一些小的更改,如果您可以保持大部分布局相同并且仅根据方向使少数项目可见/不可见,这也可以工作。

  2. 使用不同的布局;然后,您可以保留configChanges,但您必须自己在onConfigurationChanged 中实现新布局的加载,包括从旧视图中获取所有值并将它们添加到新视图中(在运行时设置的任何内容:文本值、用户输入的编辑文本、复选框状态等)。

  3. 从清单中删除configChange 行,并实现onSaveInstanceStateonRestoreInstanceState。这两个将使您有机会保存所需的任何值并在重新启动活动时恢复它们。基本和两个一样,但是不用手动重置视图。

如果可能的话,我强烈建议使用 1。如果您必须使用特定于景观的布局,则使用路线 3 是最简单的。我通常是设置 configChanges 的忠实拥护者,但如果您需要完全不同的横向布局,它就不能很好地工作。

【讨论】:

  • 请你看一次here我遇到同样的问题
  • 嗨 Gabe 感谢您的建议。我会尝试这些东西。
【解决方案2】:

在你的 android 清单中使用这个

android:configChanges="orientation|screenSize|keyboardHidden"

如果你想不指定

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

【讨论】:

    【解决方案3】:

    尝试使用以下内容。

       <uses-sdk android:targetSdkVersion="15"/>
    
    <activity android:configChanges="orientation|screenSize|keyboardHidden" />
    

    在运行 Android 4.0.4 的 Galaxy Nexus 上切换方向时,我的活动没有重新启动。

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多