Android 应用可在各种设备上运行,包括手机、平板电脑、可折叠设备、ChromeOS 设备、汽车、电视,甚至 XR 设备。为了适应这种多样的环境,您的应用应支持所有设备外形规格和显示大小。
Android 16(API 级别 36)通过替换屏幕方向、宽高比和可调整大小性方面的应用限制,使应用能够适应不同的设备规格和显示大小。这些替换项适用于最小宽度 >= 600dp 的设备,并定义了以下内容:
- 平板电脑
- 大屏可折叠设备的内屏
- 窗口化模式(适用于所有设备规格)
如果显示屏的最小宽度大于或等于 600dp,以 API 级别 36 为目标平台的应用可调整大小,并且能够进入多窗口模式(相当于 resizeableActivity="true")。
Android 16 强制执行一致的自适应应用设计模型,该模型通过尊重用户对设备屏幕方向、宽高比和显示大小的偏好来优化用户体验。
变更
对于以 Android 16(API 级别 36)为目标平台且在大屏设备上运行的应用,系统会忽略以下清单属性和 API:
| 属性或 API | 忽略的值 |
|---|---|
screenOrientation |
portrait,landscape,reversePortrait,reverseLandscape,sensorPortrait,sensorLandscape,userPortrait,userLandscape |
resizeableActivity |
全部 |
minAspectRatio |
全部 |
maxAspectRatio |
全部 |
setRequestedOrientation()getRequestedOrientation() |
portrait,landscape,reversePortrait,reverseLandscape,sensorPortrait,sensorLandscape,userPortrait,userLandscape |
例外情况
Android 16 变更的例外情况包括:
显示屏尺寸小于 sw600dp(大多数手机、可翻转设备和大屏可折叠设备的外屏)
基于
android:appCategory标志的游戏使用 Android App Bundle 和 Play 应用签名发布游戏,让 Google Play 管理该标志并自动提供 app bundle 的优势。另请参阅应用清单概览。
用户在宽高比设置中选择启用应用的默认行为
选择停用
To opt out of the API level 36 behavior, declare the
PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY manifest property.
To opt out for a specific activity, set the property in the <activity>
element:
<activity ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</activity>
To opt out for your entire app, set the property in the <application> element:
<application ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</application>
If your app targets Android 16 (API level 36) or higher, this property doesn't lock the display orientation or prevent screen rotation on large displays.
测试
如需测试您的应用是否会受到 Android 16 变更的影响,请在 Android Studio 中使用 Pixel Tablet 和 Pixel Fold 系列模拟器,并在应用模块的 build.gradle 文件中设置 targetSdkPreview = "Baklava"。
或者,通过启用 UNIVERSAL_RESIZABLE_BY_DEFAULT 标志,在测试设备上使用应用兼容性框架(请参阅兼容性框架工具)。
您可以使用 Espresso 测试框架和 Jetpack Compose 测试 API 自动执行测试。
实施指南
限制设备屏幕方向、宽高比或应用尺寸调整的应用在 Android 16 上可能会出现显示问题,例如布局重叠。为了在手机、可折叠设备、平板电脑、ChromeOS 设备等设备上提供最佳用户体验,请将应用打造为响应式和自适应。
准备情况核对清单
请使用以下核对清单,确保您的应用已为 Android 16 变更做好准备:
- 避免界面组件拉伸:为标准竖屏手机设计的布局可能无法适应其他宽高比。例如,占据整个显示宽度的界面元素在横屏方向上可能会显得拉伸。为组件添加了最大宽度,以避免拉伸。
- 启用布局滚动:如果布局不滚动,用户可能无法访问横屏模式下屏幕外的按钮或其他界面元素。启用应用布局滚动功能,以验证无论显示屏高度如何,所有内容均可访问。
- 验证相机在纵向和横向模式下的兼容性:假设相机取景器预览相对于相机传感器具有特定宽高比和方向,可能会导致预览在不符合要求的显示屏上被拉伸或翻转。验证取景器是否能随屏幕方向变化正常旋转。启用取景器以调整为不同于传感器宽高比的界面宽高比。
- 在窗口大小变化期间保留状态:移除屏幕方向和宽高比限制可能会导致应用窗口大小频繁变化,以响应用户使用应用的偏好,例如通过旋转、折叠或展开设备,或者通过在多窗口模式或窗口化模式下调整应用大小。配置更改(例如屏幕方向更改和窗口大小调整)会导致重新创建 activity(默认情况下)。为了帮助提供最佳用户体验,请保留应用状态,以便应用保留数据(例如表单输入),并且用户可以保持上下文。
- 使用窗口大小类别:无需进行设备专属的自定义设置,即可支持不同的窗口大小和宽高比。假设窗口大小会经常变化。使用窗口大小类来表征窗口尺寸,然后应用相应的自适应布局。
- 构建自适应布局:在窗口大小类别中,自适应布局会根据显示尺寸的变化进行调整,以始终呈现最佳的应用效果。
如需有关在 Compose 中构建自适应布局的实操指南,请参阅使用 Jetpack Compose 构建自适应应用 Codelab。如果您要迁移使用 View 的应用,请参阅 Compose 采用策略。
时间轴
- Android 16 (2025 年):对于以目标 API 级别 36 为目标的应用,支持所有屏幕方向和宽高比以及应用可调整大小功能是大屏设备(最小屏幕宽度 >= 600dp)的基本体验。不过,开发者可以选择停用。
| 目标 API 级别 | 适用的设备 | 允许开发者选择不参与 |
|---|---|---|
| 36(Android 16) | 大屏设备(最小屏幕宽度 >= 600dp) | 是 |
以特定 API 级别为目标的截止日期因应用商店而异。自 2026 年 8 月起,Google Play 将要求应用以 API 级别 36 为目标平台。