【问题标题】:Why screenSize changes when the user switches between landscape and portrait?当用户在横向和纵向之间切换时,为什么 screenSize 会发生变化?
【发布时间】:2018-01-29 02:32:48
【问题描述】:

根据 Android 指南,当用户旋转设备时,“screenSize”会发生变化,为什么“orientation”值不足以表明这一点?

Link to android guide of activity tag

【问题讨论】:

    标签: android android-manifest android-configchanges


    【解决方案1】:

    screenSize的配置变化并不代表物理屏幕发生了变化,而是逻辑屏幕的尺寸发生了变化。例如,从纵向旋转到横向后,DisplayMetrics.widthPixels 的值会大得多。

    需要考虑的一点是,screenSize 配置更改类型和 最小宽度 和 可用宽度 资源限定符都已在 API 级别 13 中添加。可用当您旋转设备时,屏幕宽度会发生变化,因此将其标记为“屏幕尺寸”变化是有意义的。

    【讨论】:

      【解决方案2】:

      您可以在 Manifest 中解决此问题

      只需添加这一行

      android:configChanges="orientation|screenSize"
      

      如果您为横向创建不同的 XML,请不要为该活动使用 android:configChanges="orientation|screenSize" 标记。

      【讨论】:

      • 在清单中添加android:configChanges 属性以防止框架破坏和重新创建活动是一个坏主意,并且只能由确切知道他们正在进入什么领域的专家来完成。简单地学习如何在 android 活动生命周期内工作,普通用户会好得多。
      • 嗨@BenP。谢谢你的建议 :) !这就像一种解决方法,不应该考虑安全使用它
      • 如果你不介意你能解释一下为什么使用它不安全吗?
      • 因为正如我所说,如果您有不同的横向或纵向 xml,您会遇到问题,可以说这只是自动调整屏幕大小
      • @tokaaliamien 此属性的存在会在配置更改期间更改您的活动的行为。如果没有该属性,您的活动将被销毁并重新创建(存在新配置,允许自动重新加载与配置相关的资源)。使用该属性,您的活动不会被破坏和重新创建,因此您必须自己手动重新加载这些资源。此外,此属性主要用于防止旋转期间的状态丢失,但不会在用户后台等时防止状态丢失。
      猜你喜欢
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多