系统会忽略有关屏幕方向和尺寸可调整性的限制

现在,Android 应用可在各种设备(例如手机、平板电脑、可折叠设备、桌面设备、汽车和电视)上运行,并且在大屏设备上采用各种窗口模式(例如分屏和窗口化模式),因此开发者应构建能够适应任何屏幕和窗口大小的 Android 应用,无论设备的方向如何。在如今的多设备世界中,限制屏幕方向和尺寸调整等范例过于严格。

忽略屏幕方向、尺寸调整和宽高比限制

对于以 Android 17(API 级别 37)或更高版本为目标平台的应用,屏幕方向、尺寸调整和宽高比限制不再适用于最小宽度大于 600dp 的显示屏。应用会填满整个显示窗口,无论宽高比或用户的首选屏幕方向如何,并且不会使用柱状信箱模式。

Android 17 移除了 Android 16 中针对大屏设备提供的屏幕方向和尺寸调整限制的临时开发者选择停用功能

此变更引入了一种新的标准平台行为。Android 正在朝着一种模式发展,在这种模式下,应用需要适应各种屏幕方向、显示屏尺寸和宽高比。固定屏幕方向或有限的尺寸调整等限制会阻碍应用的适应性。请让您的应用具有自适应性,以提供 尽可能最佳的用户体验。

您还可以使用应用兼容性框架 并启用 UNIVERSAL_RESIZABLE_BY_DEFAULT 兼容性标志来测试此行为。

常见重大变更

忽略屏幕方向、尺寸调整和宽高比限制可能会影响应用在某些设备上的界面,尤其是为锁定为纵向的小布局设计的元素。例如,应用可能会出现布局拉伸以及屏幕外动画和组件等问题。您对宽高比或屏幕方向做出的任何假设都可能会导致应用出现视觉问题。详细了解如何避免这些问题并改进应用的自适应行为。

在横向可折叠设备上或在多窗口模式、窗口化模式或连接的显示屏等场景中计算宽高比时,常见的问题是相机预览显示拉伸、旋转或裁剪。此问题通常发生在大屏设备和可折叠设备上,因为应用假定相机功能(例如宽高比和传感器方向)与设备功能(例如设备方向和自然方向)之间存在固定关系。详细了解如何管理相机预览

允许设备旋转会导致更多 activity 重新创建,如果未正确保留,可能会导致用户状态丢失。了解如何在保存界面状态中正确保存 界面状态。

实现细节

在全屏模式和多窗口模式下,以下清单属性和运行时 API 在大屏设备上会被忽略:

以下 screenOrientation, setRequestedOrientation()getRequestedOrientation() 的值会被忽略:

  • portrait
  • reversePortrait
  • sensorPortrait
  • userPortrait
  • landscape
  • reverseLandscape
  • sensorLandscape
  • userLandscape

对于显示屏尺寸调整,android:resizeableActivity="false", android:minAspectRatioandroid:maxAspectRatio 不起作用。

例外情况

在以下情况下,Android 17 屏幕方向、尺寸调整和宽高比限制不适用:

  • 游戏(基于 android:appCategory 标志)
  • 用户在设备的宽高比设置中明确选择启用应用的默认行为
  • 最小宽度小于 sw600dp 的屏幕