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

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:minAspectRatio 和 android:maxAspectRatio 不起作用。

例外情况

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

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