Android 12L 功能和变更

12L 功能投放让 Android 12 在大屏设备上表现更出色

12L 是一次特殊的功能投放,可让 Android 12 在大屏设备上表现更出色。我们针对大屏设备优化了系统界面,使多任务处理更强大、更直观,并改进了对应用的兼容性支持,使应用在默认情况下看起来更美观。我们还新增了少量开发者 API。

您可以先下载 Android 12L 模拟器在合作伙伴设备上获取 Android 12L

下面我们来看看有哪些新变化。

针对大屏设备优化了操作系统

12L 优化了系统界面,使通知、快捷设置、锁屏、概览、主屏幕等元素在大屏设备上看起来更美观,使用起来更便捷。

在大屏设备上,通知栏以新的两列布局显示快捷设置和通知,以此充分利用空间。锁屏也使用更大的两列布局来突出显示通知和时钟,此外还优化了“设置”等系统应用。

大屏幕布局采用两列布局显示更多内容。

在优化后的操作系统中,大屏设备上的按键交互更加容易。例如,平板电脑的锁屏图案和 PIN 码控件现在显示在屏幕的一侧,更容易操控。用户只需点按屏幕另一侧,PIN 码/图案控件便会移至该侧。

对于可折叠设备,我们优化了主屏幕网格以及折叠-展开的转换效果,现在用户能够从单个外部屏幕无缝切换到更大的展开屏幕,增强连贯性的同时保留了他们的选择。

面向开发者:媒体投影的变化

从 12L 开始,当在 Surface 上呈现虚拟屏幕时,系统会根据 Surface 的大小缩放虚拟屏幕,其过程类似于使用 ImageViewcenterInside 选项。

这种新的缩放方法可最大限度地增加 Surface 图像的大小,同时确保适当的宽高比,提升了将屏幕投射到电视和其他大屏幕上的效果。

如需了解详情,请参阅大屏设备上的媒体投影

强大直观的多任务处理功能

用户经常会在使用屏幕较大的平板电脑、Chromebook 和可折叠设备时执行多任务处理。12L 中新增的生产力功能使多任务处理变得更强大、更直观。

12L 添加了新的任务栏,让您可以更轻松地即时启动和切换应用。手势更是提升了任务栏的使用速度,您可以通过拖放进入分屏模式,向上滑动进入主屏幕。在手势导航中,快速切换手势可让用户浏览最近使用的应用。用户可以通过长按随时显示或隐藏任务栏。

通过任务栏,用户可以更快地启动和切换应用,通过拖放进入分屏模式,向上滑动返回主屏幕。

在分屏模式下运行应用是一种常见的多任务处理方式。在 12L 中,分屏模式比以往更容易阅读和使用。现在,用户可以直接从任务栏将他们最常用的应用拖放到分屏中,也可以使用概览中的新“拆分”操作通过点按来启动分屏模式。

为了给用户提供更一致的分屏体验,Android 12 及更高版本允许所有应用进入多窗口模式,无论它们是否可调整大小。

面向开发者:在分屏模式下测试应用

由于分屏模式的使用越来越普遍,以及 Android 12 中引入的变更允许用户将所有应用启动到分屏模式,我们强烈建议您在分屏模式下测试应用。

面向开发者:处理边衬区大小的动态变化

即使 Android 12L 没有引入新的边衬区 API,系统也会将新的任务栏作为边衬区报告给应用。

与手势导航搭配使用时,任务栏可以动态地隐藏和显示。如果您的应用本就使用边衬区信息来绘制界面,则需要考虑当应用处于恢复状态时,边衬区大小可能会发生变化。在这些情况下,您的应用需要调用 setOnApplyWindowInsetsListener 并处理边衬区的尺寸变化,如系统栏边衬区中所述。

改善了兼容性体验

许多应用已经针对大屏设备进行了优化,现在可通过自适应布局、多窗口模式支持、跨屏幕尺寸的连贯性和设备折叠状态变化等功能提供出色的体验。

对于尚未优化的应用,我们对兼容模式进行了视觉和稳定性方面的改进,以便为用户提供更好的体验,同时使这些应用在默认情况下看起来更美观。

兼容模式的改进可为未针对大屏设备进行优化的应用提供更好的用户体验。

现在设备制造商可通过叠加层配置来自定义一些选项,改进了信箱模式的界面。例如,设备制造商现在可以配置应用宽高比、对应用窗口应用圆角,以及设置状态栏透明度。

面向开发者:在兼容模式下检查应用

如果您的应用尚未优化,无法适应屏幕尺寸和设备折叠状态变化,您的应用可能会在兼容模式下启动。我们建议您使用 12L 兼容模式来测试应用,以确保您的应用外观和功能正常。

如需了解详情,请参阅大屏幕兼容模式

针对大屏设备的更多更新和资源

大屏设备上 Google Play 的变化

为了让用户更轻松地在平板电脑、可折叠设备和 ChromeOS 设备上找到最佳应用体验,Google Play 做出了一些更改,以重点推介针对用户设备优化的应用。

新增的检查服务按照大屏设备应用质量指南评估每个应用的质量,确保我们在这些设备上尽可能呈现更出色的应用。如果应用未针对大屏设备进行优化,大屏设备用户现在会在该应用的 Play 商店商品详情页上看到相关通知,这有助于他们找到适合在其设备上运行的应用。

Play 还引入了大屏设备专用的应用评分机制(于 2021 年 8 月发布),让用户能够对您的应用在其大屏设备上的表现进行评分。

使用 Jetpack WindowManager 嵌入 activity

利用 activity 嵌入功能,您可以一次显示多个 activity(例如,在列表-详情模式下),以便充分利用大屏设备的额外显示区域,并且只需对应用进行少量重构,甚至无需重构。您可以通过创建 XML 配置文件或进行 Jetpack WindowManager API 调用,确定应用如何显示其 activity(并排或堆叠)。系统处理其余的工作,根据您创建的配置确定呈现方式。如果您的应用使用多个 activity,建议您尝试嵌入 activity。如需了解详情,请参阅 activity 嵌入

设备屏幕方向请求

与标准手机不同,可折叠设备和平板电脑经常在横屏和竖屏模式下切换使用。平板电脑通常横向放置,而可折叠设备可根据其折叠状态确定放置方向。

有些应用会请求固定的屏幕方向(横屏或竖屏),并且希望无论设备的屏幕方向如何,都保持首选屏幕方向(请参阅 screenOrientation 清单属性)。尽管在 Android 12L 中仍支持此功能,但设备制造商可以选择覆盖应用的首选屏幕方向请求。

在 Android 12(API 级别 31)及更高版本中,设备制造商可以将个别设备屏幕(例如,平板电脑大小的可折叠设备屏幕)配置为忽略屏幕方向指定,并强制应用在竖屏模式下垂直展示而在横屏模式下以信箱模式展示。通过忽略屏幕方向指定,Android 可以更好地满足开发者始终以固定宽高比展示应用的意图,同时将应用保持在最易使用的方向。

不过,为了提供最佳用户体验,请在设计应用时采用自适应布局。在尺寸大于 600dp 的屏幕上,无论是竖屏模式还是横屏模式,这种布局都能充分利用可用的屏幕空间。

让您的应用做好准备

随着越来越多的大屏设备部署 Android 12L 功能更新,现在是时候测试您的应用并针对大屏对其进行优化了。

您可以先设置 Android 12L 模拟器在合作伙伴设备上获取 Android 12L。您将能够看到针对大屏设备所做的最新系统界面更改,在您的应用中试用任务栏和分屏模式,在兼容模式下测试您的应用,甚至还可以尝试使用 Jetpack WindowManager API 嵌入 activity。

使用 Android 模拟器新增的可调整大小设备定义,在各种大屏设备场景下测试 Android 12L。

如果您刚开始进行大屏设备开发,请参阅大屏设备和可折叠设备指南,阅读有关如何在这些设备上打造出色体验的最新指南和技术。

要测试的内容

为 12L 创建虚拟设备后,您需要使用一些常见的大屏设备用例测试您的应用,以确保应用按预期响应。下面列出了几项建议的测试内容,并提供了指向有关相关资源的详细信息的链接,这些资源可以帮助您针对大屏设备优化应用:

要测试的内容 资源
屏幕尺寸、设备折叠状态和旋转

检查当屏幕尺寸因设备折叠状态变化(例如展开可折叠设备或将可折叠设备置于桌面模式)而变化时,应用如何响应。此外,尝试在处于上述各状态时旋转设备,确保应用以最佳方式响应。

文档 示例 Codelab 技术讲座
任务栏交互和分屏模式

检查在大屏设备上使用任务栏查看应用时,应用如何响应。检查应用界面是否被任务栏截断或阻止,尝试使用任务栏进入和退出分屏和多窗口模式,并使用任务栏测试在您的应用与其他应用之间快速切换。

如果应用的屏幕方向固定且不可调整,请检查应用如何响应兼容模式调整(例如信箱模式)。

文档 示例 技术讲座
多窗口模式

检查您的应用在大屏设备 (sw >= 600dp) 上以多窗口模式运行时如何响应,尤其是当应用设置 resizeableActivity="false" 时。

如果您的应用设置 resizeableActivity="true",还需检查应用在小屏设备 (sw < 600dp) 上以多窗口模式运行时如何响应。

如果您的应用使用 Display API(如 Display.getRealSize()Display.getRealMetrics()),请改为使用 Jetpack WindowManager 库中的 WindowMetrics API。

文档 示例 技术讲座
媒体投影

如果您的应用使用媒体投影,检查您的应用在大屏设备上播放、流式传输或投射媒体时如何响应。此外,请务必考虑可折叠设备上的设备折叠状态变化。

文档 示例 技术讲座
相机预览

对于相机应用,检查当您的应用在多窗口模式或分屏模式下被限制在屏幕某个区域时,相机预览界面在大屏设备上如何响应。此外,还要检查应用在可折叠设备的折叠状态发生变化时如何响应。

文档