详解 Android 12L|更好地适配大屏幕设备
作者 / 工程副总裁 Dave Burke
目前,超过 2.5 亿台大屏幕设备搭载了 Android 系统,其中包括平板电脑、可折叠设备和 ChromeOS 设备。仅在过去的 12 个月里,就有近 1 亿台新的 Android 平板电脑被激活,同比增长 20%;而 ChromeOS 的增长率为 92%,是目前增长最快的桌面设备平台。可折叠设备正在崛起,同比增长超过 265%!总的来说,目前有超过 2.5 亿台活跃的大屏幕设备搭载了 Android 系统。在这样的势头下,我们将继续努力让 Android 成为更好的操作系统,为用户和开发者提供更优质的服务。
Android 开发者峰会
https://developer.android.google.cn/events/dev-summit/
Android 12L 预览: 适用于大屏幕的功能更新
Android 12L 开发者预览版
https://developer.android.google.cn/about/versions/12/12L
我们还带来了更加强大和直观的多任务处理: Android 12L 在大屏幕设备上添加了一个新的任务栏,用户可以随时切换到喜爱的应用。新任务栏也让分屏模式更加容易实现: 只需在任务栏中拖放,即可以分屏模式运行应用。为了在 Android 12 及之后的版本中打造更好的分屏模式体验,我们正在协助用户,让所有应用在启动后自动进入分屏模式,无论这些应用是否声明为可调整大小。
最后,我们对兼容模式的视觉效果和稳定性方面进行了改进,为用户提供更好的宽屏显示,并优化了应用在默认情况下的显示。设备制造商可以轻松地自定义宽屏显示的颜色或处理方案、调整边衬区窗口的位置、应用自定义圆角等。
下载 12L Android 模拟器
https://developer.android.google.cn/about/versions/12/12L/get功能和变更
https://developer.android.google.cn/about/versions/12/12L/summary预览版概览
https://developer.android.google.cn/about/versions/12/12L/overview提出问题和需求
https://developer.android.google.cn/about/versions/12/12L/feedback
https://developer.android.google.cn/about/versions/12/12L
更轻松地针对大屏幕设备进行构建
设计过程中始终考虑大屏幕模式
△ Material Design 指南中的自适应 UI 模式
利用新的导航组件构建响应式 UI
为了向用户提供最佳的导航体验,您应该提供针对用户设备窗口尺寸类量身定制的导航界面。推荐的导航模式包括适用于紧凑屏幕的导航栏,以及适用于中等屏幕宽度的设备类和更大屏幕设备 (600dp 以上) 的导航栏。对于屏幕更宽的设备,我们新发布的 Material Design 指南中提出了几个有关大屏幕布局的方案,例如可以使用 SlidingPaneLayout 来实现列表/细节结构。您可以查看指南,了解如何在 View 和 Compose 中实现响应式 UI 导航。
紧凑屏幕的导航栏
http://m3.material.io/components/navigation-bar/overview中等屏幕宽度的设备类和更大屏幕设备的导航栏
https://m3.material.io/components/navigation-rail/overviewMaterial Design 指南
https://m3.material.io/foundations/adaptive-design/foldables/compositionsView
https://developer.android.google.cn/guide/topics/large-screens/navigation-for-responsive-uisCompose
https://developer.android.google.cn/jetpack/compose/nav-adaptive
Activity embedding API
https://developer.android.google.cn/guide/topics/large-screens/activity-embedding
使用 Compose 更加轻松地适应屏幕的变化
通过 Jetpack Compose 可以更加轻松地针对大屏幕和多样化布局进行构建。如果您准备采用 Compose,这也是针对大屏幕进行优化的最佳时机。
Compose 是一个声明式 UI 工具包;所有的 UI 都是用代码描述的,而且该工具包可以轻易地在运行时确定 UI 应该如何适应可用的尺寸。因此,Compose 特别适合用于开发自适应 UI,因为其能够轻松地处理不同屏幕尺寸或组件的 UI 变化。查看在 Compose 中构建自适应布局指南,了解您需要知道的基本内容:
https://developer.android.google.cn/jetpack/compose/layouts/adaptive
使用 WindowManager API 构建响应式 UI
Activity embedding 帮助您利用大屏幕的额外显示区域,一次显示多个 Activity,例如拆分视图 (List-Detail) 模式,而且几乎不需要对应用进行重构。您可以创建一个 XML 配置文件或调用 Jetpack WindowManager API,以此来决定应用通过并排还是堆叠的方式显示其 Activity。系统会处理其他事项,并根据您创建的配置来确定展示方式。
Activity embedding 可以在可折叠设备上流畅运行,随着设备的折叠和展开轻松地堆叠和分开 Activity。如果您的应用使用多个 Activity,则 Activity embedding 可以改善您使用大屏幕设备时的体验。在 Jetpack WindowManager 1.0 Beta 03 及更高版本中试用 Activity embedding API。您可以访问官方文档,了解详情:
https://developer.android.google.cn/guide/topics/large-screens/activity-embedding
△ Jetpack WindowManager 中的 Activity embedding
使用窗口尺寸类来帮助检测您窗口的尺寸
△ Jetpack WindowManager 中的窗口尺寸类
让应用能够感知折叠
在 Android Studio 中构建并测试适用于大屏幕的应用
参考设备
△ 参考设备定义
布局验证
在调整大屏幕 UI 时,如果您不确定从哪里开始入手,您可以首先使用新的工具来发现可能会对大屏幕设备造成影响的潜在问题。我们正在 Android Studio Chipmunk 中开发一个新的可视化的 lint 工具,用于在布局验证中主动显示 UI 提醒和建议,包括哪些参考设备会受到影响。
△ 参考设备类中的布局验证工具
Android Studio Chipmunk
https://developer.android.google.cn/studio/preview
可调整尺寸的模拟器
△ 可调整尺寸的 Android 模拟器
Android Studio Chipmunk
https://developer.android.google.cn/studio/preview
Google Play 针对大屏幕设备的更新
为了在用户使用平板电脑、可折叠设备和 ChromeOS 设备时为其提供更好的应用体验,我们正在对 Google Play 进行更新,以突出显示那些已针对用户设备进行优化的应用。
我们增加了新的检查项,并根据我们的大屏幕应用质量指南评估各个应用的质量,以确保我们能在这些设备上突出显示最为合适的应用。对于未针对大屏幕进行优化的应用,我们将开始在应用的 Play 商店列表页上发送通知来提醒大屏幕设备用户。
大屏幕应用质量指南
https://developer.android.google.cn/docs/quality-guidelines/large-screens-app-quality
正如今年早些时候宣布的计划,我们还将引入大屏幕设备特定的应用评分功能,让用户能够对您的应用在大屏幕设备上的运行情况进行评分。这些变更即将在明年实现,因此我们提前通知您,以便您能为应用做好准备工作!
此外,您也可以阅读这篇文章,了解我们如何用更好的业务模式满足开发者们的需求。
更多详情
为了帮助您针对大屏幕和可折叠设备进行构建,无论您使用的是 View 还是 Compose,我们都会为您提供帮助!我们即将推出全新的指南,为您说明如何在全新和现有的应用中支持不同的屏幕尺寸、如何为 View 和 Compose 实现导航、如何利用可折叠设备的优势等内容。您可以参阅大屏幕指南,了解对 View 的支持和 Compose 指南:
https://developer.android.google.cn/guide/topics/ui/responsive-layout-overview
Google I/O Android 应用
https://github.com/google/iosched
Trackr
https://github.com/android/trackr
Jetnews
https://github.com/android/compose-samples/tree/main/JetNews
Jetcaster (支持桌面设备)
https://github.com/android/compose-samples/tree/main/Jetcaster
推荐阅读