了解可折叠设备

可折叠设备为创新型应用开发提供了机会。同一设备上的大屏幕和小屏幕可提供互补但独特的互动体验。桌面折叠状态和图书折叠状态等折叠功能可实现富于想象力的布局和打破常规的界面。

图 1. 处于多种折叠状态的可折叠设备:折叠、平展、平展旋转到横向和半开(桌面模式)。

响应式/自适应设计

对可折叠设备的支持从自适应设计开始。响应式布局可让应用在各种尺寸的显示屏(包括可折叠设备的折叠和展开屏幕)上呈现良好的视觉效果和运行效果。对于基于 View 的布局,请使用 ConstraintLayout 实现自适应设计;对于 Compose,请使用 BoxWithConstraints

但有时,布局需具有适应能力。折叠和展开屏幕的尺寸和宽高比可能相差很大,因此即使是响应式布局也无法完美地适应这两种显示屏。自适应设计可创建针对不同屏幕尺寸和配置进行了优化的备用布局。在可折叠设备被折叠或展开、屏幕方向为纵向或横向,或者处于桌面折叠状态或图书折叠状态时,自适应布局可提供经过优化的用户体验。

例如,横向展开的大屏可折叠设备就像平板电脑一样;包含侧边导航栏的双窗格布局可充分利用宽屏空间。折叠后,该设备与标准手机类似;带底部导航栏的单列布局虽然简单,但卓有成效。由于布局是相互独立的,因此您可以针对特定用例优化每种布局。

图 2. 针对折叠和展开屏幕优化过的自适应布局。

可折叠设备可以通过多种方式折叠,如向内折叠(显示屏折叠到设备内部)或向外折叠(显示屏环绕着设备)。响应式/自适应设计可让应用做好准备,以支持各种外形规格的可折叠设备。

如需详细了解可折叠设备的响应式/自适应设计,请参阅以下内容:

可折叠设备状态和折叠状态

可折叠设备的折叠边将屏幕分为两个部分。折叠边可以是屏幕中的灵活区域,也可以是(双屏幕设备上)用于分隔两个显示屏的合页。

折叠边有尺寸和 occlusionType 属性,该属性可定义折叠边是否遮盖显示屏的一部分。在双屏幕设备上,occlusionTypeFULL,即使应用可能跨越两个屏幕,用户也无法在折叠(合页)区域中查看任何内容。

可折叠设备可能会处于各种折叠状态,例如 FLAT(完全展开)或 HALF_OPENED(介于完全展开和完全闭合之间)。

图 3. 处于平展和半开状态的可折叠设备。

当设备处于 HALF_OPENED 状态时,可能处于两种折叠状态,具体取决于折叠边的方向:一个是桌面折叠状态(水平折叠边),另一个是图书折叠状态(垂直折叠边)。

桌面和图书折叠状态提供了新的布局可能性,但 HALF_OPENED 设备状态也施加了一些限制。例如,用户可能很难使用折叠边附近的界面控件,折叠边上叠加的文字可能难以辨识(如果 occlusionTypeFULL,则可能无法辨识)。

在设计布局时,请让界面元素在任何设备状态下都可访问。合理设定对话框和弹出式菜单的位置,确保它们不会叠加在折叠边上。确保在设备部分折叠时用户可以看到重要内容。当设备处于半开状态时,将内容拆分为两个区域 - 桌面折叠状态下分成顶部和底部区域、图书折叠状态下分成左右两个区域。

如需详细了解折叠边和可折叠设备折叠状态,请参阅让应用具备折叠感知能力

应用连续性

当设备折叠或展开时,应用会在从一个屏幕转换到另一个屏幕时停止运行,然后重新开始运行。为向用户提供连续性体验,应用应在折叠或展开式屏幕上重构应用布局时恢复状态。例如,应用应执行以下操作:

  • 保留输入字段中输入的文本
  • 恢复键盘状态
  • 恢复可滚动字段的滚动位置
  • 在应用停止运行后从中断处继续播放媒体

可折叠设备的不同屏幕布局也应相互补充。例如,如果折叠屏幕显示一家网店中商品的图片和说明,则展开屏幕应不仅显示相同的图片和说明来提供连续性体验,还应包含商品规格或评价等补充内容。

如需详细了解如何管理应用状态和连续性,请参阅保存界面状态处理配置变更

多任务处理

大屏可折叠设备与平板电脑的屏幕大小相仿,非常适合在多窗口模式下同时处理多项任务。可折叠设备支持分屏模式;有些甚至支持自由窗口模式,在这种模式下,应用可在可移动且可调整大小的窗口中显示,类似于桌面设备窗口系统。

图 4. 屏幕方向为横向的可折叠设备,分别在分屏模式(左侧)和自由窗口模式(右侧)中运行三个应用。

Android 12(API 级别 31)及更高版本默认采用多窗口模式 - 在大屏设备上,无论应用配置为何,所有应用都会在多窗口模式下运行。针对之前版本(最低至 Android 7.0 [API 级别 24]),您必须将应用配置为可调整大小以支持多窗口模式。

如需了解如何在多窗口模式下处理多项任务,请参阅多窗口模式支持

拖放

大屏可折叠设备提供了充足的屏幕空间进行拖放互动。可折叠设备上的多窗口模式支持在应用之间进行拖放。

拖放互动可打造富有吸引力的高效用户体验。请使用 Android 拖放框架为您的应用添加拖放功能。如需了解详情,请参阅拖放

其他资源