产品动态

Jetpack WindowManager 1.5 已是稳定版

3 分钟阅读时间
Francesco Romano
开发者关系工程师,Android

我们很高兴地宣布, Jetpack WindowManager 1.5.0 现在已是稳定版!

此版本以 WindowManager 的强大适应性为基础,让您能够更轻松地创建精美且自适应的界面,这些界面在各种屏幕尺寸上都能呈现出色的效果。随着 Android 生态系统的不断发展,用户在各种设备上使用应用的情况比以往任何时候都多:从手机和可折叠设备到平板电脑、连接的显示屏、Chromebook,甚至在停车模式下的车载显示屏上也是如此。

WindowManager 1.5 的重点是为这种多样化的设备环境提供更好的工具。

WindowManager 1.5 的新功能

此稳定版为超大屏幕引入了新的断点,增强了 activity 嵌入 API,并为计算窗口指标提供了更大的灵活性。

新的窗口大小类别:Large 和 Extra-large

1.5 中最大的更新是新增了两个宽度窗口大小类别:Large 和 Extra-large。

窗口大小类别是我们官方的主观视口断点集,可帮助您设计和开发自适应布局。在 1.5 中,我们将此指南扩展到了超出典型平板电脑的屏幕。

以下是新的宽度断点:

  • Large :适用于宽度介于 1200dp 和 1600dp 之间的屏幕
  • Extra-large :适用于宽度 ≥1600dp 的屏幕
window_size_classes_width.png

基于显示屏宽度的不同窗口大小类别。 

为什么这些很重要?

从 Android 16 QPR1 Beta 2 开始,Android 支持 连接的显示屏,让用户能够将外部显示屏连接到设备,并将其转换为具有大屏幕的桌面工具。

ADB_5350_asset.gif

手机连接到外部显示屏,外部显示屏上显示桌面会话。 

有了这项新功能,包含更大显示屏的主观指南就至关重要了。

在这些超大的表面上,仅仅放大平板电脑的“Expanded”布局并不总是最佳的用户体验。例如,电子邮件客户端可能会在“Expanded”窗口大小类别中舒适地显示两个窗格(邮箱和消息)。但在“Extra-large”桌面显示器上,电子邮件客户端可以优雅地显示三个甚至四个窗格,例如邮箱、消息列表、完整消息内容以及日历/任务面板,所有这些都可以同时显示。

通过为超大显示屏尺寸提供官方断点,WindowManager 1.5 可向您发出明确信号,让您引入专门为高效、信息密集的桌面体验设计的布局。

窗口大小类别可以使用 computeWindowSizeClass() 进行计算,这是一个 androidx.window.core.layout 库扩展函数,用于扩展 Set<WindowSizeClass> 类型。

如需在项目中添加新的窗口大小类别,只需从 WindowSizeClass.BREAKPOINTS_V2 集(而不是 WindowSizeClass.BREAKPOINTS_V1)调用该函数:

  val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


然后,在确定应用至少有那么多空间时,应用正确的布局:

  if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

自适应库

Compose Material 3 Adaptive 库可帮助您创建自适应界面,这些界面会根据当前窗口配置(如窗口大小类别或设备姿态)自动调整自身。

好消息是,该库已更新为支持新的断点!从 1.2 版(目前处于候选发布版本阶段)开始,默认窗格基架指令函数支持 Large 和 Extra-large 窗口宽度大小类别。

您只需在 Gradle build 文件中声明要使用新的断点,即可选择启用:

  currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

其他改进

  • activity 嵌入 - 自动保存和恢复:WindowManager 现在可以自动保存和恢复 activity 嵌入拆分的状态。这有助于在进程重新创建时保留用户的布局,从而带来更稳定、更一致的体验。开发者不再需要手动保存和恢复状态,只需通过设置 EmbeddingConfiguration#isAutoSaveEmbeddingState 属性即可选择启用自动保存和恢复。
  • 扩展的 WindowMetrics:您现在可以从 Application 上下文(而不仅仅是 Activity 上下文)计算 WindowMetrics。这为从应用的不同部分访问窗口信息提供了更大的灵活性。

如何开始使用

如需开始在 Android 项目中使用新的 Large 和 Extra-large 大小类别以及其他 1.5 功能,请将 build.gradle.kts 中的应用依赖项更新为最新的稳定版本:

  dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5 是在创建可在各种 Android 外形规格上运行的 完全自适应应用方面迈出的又一步。如需查看完整的变更和 bug 修复列表,请参阅官方版本说明

祝大家编码顺利!

作者:

继续阅读