Android 开发者 前天 22:05
Jetpack WindowManager 1.5 助力应用适配超大屏幕
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Jetpack WindowManager 1.5 稳定版现已发布,为超大屏幕设备引入了新的断点,并增强了 Activity 嵌入 API,提供计算窗口指标的灵活性。新版本增加了“大型”(1200dp-1600dp)和“超大型”(1600dp以上)宽度窗口大小类别,以支持外接显示器等大屏设备。这使得开发者能够为不同屏幕尺寸设计更优化的布局,例如在超大显示器上实现三到四窗格的邮件客户端。Compose Material 3 自适应库也同步更新以支持这些新断点。此外,WindowManager 1.5 还实现了 Activity 嵌入状态的自动保存和恢复,以及扩展了 WindowMetrics 的计算能力,让应用在各种设备形态上都能提供流畅的自适应体验。

✨ **新增超大屏断点,优化布局适应性**:Jetpack WindowManager 1.5 引入了“大型”(1200dp-1600dp)和“超大型”(1600dp以上)两个新的宽度窗口大小类别。这为开发者提供了明确的指导,以设计和开发能够完美适配从手机到外接显示器等各种尺寸设备的自适应布局,尤其是在超大屏幕上,可以实现更丰富、信息密集型的界面,例如邮件客户端的多窗格显示。

🚀 **增强 Activity 嵌入与状态管理**:新版本增强了 Activity 嵌入 API,并增加了自动保存和恢复 Activity 嵌入分屏状态的功能。通过 `EmbeddingConfiguration#isAutoSaveEmbeddingState` 属性,开发者可以轻松启用此功能,从而在进程重建时保留用户的布局状态,提供更稳定、一致的用户体验,无需手动处理状态保存。

📐 **提升窗口指标计算灵活性**:WindowManager 1.5 扩展了 WindowMetrics 的计算能力,允许开发者通过 Activity 上下文或 Application 上下文来计算窗口指标。这为从应用的不同部分访问窗口信息提供了更大的灵活性,有助于更精确地响应窗口变化和进行布局调整。

🧩 **Compose Material 3 自适应库同步更新**:与 WindowManager 1.5 的新断点同步,Compose Material 3 自适应库也进行了更新。从 1.2 版本开始,该库的默认 pane scaffold directive 函数已支持大型和超大型窗口宽度大小类别,开发者只需通过配置即可启用,进一步简化了使用新断点的自适应界面开发流程。

原创 Android 2025-11-14 17:32 北京

Jetpack WindowManager 1.5 稳定版针对超大屏幕引入了全新断点,增强了 Activity 嵌入 API,并能为计算窗口指标提供更大的灵活性。

Jetpack WindowManager 1.5.0 稳定版现已推出!

🔗 Jetpack WindowManager 1.5.0

https://developer.android.com/jetpack/androidx/releases/window#version_15_2

此版本建立在 WindowManager 强大的适应性基础之上,可助您更轻松地创建能够完美适配所有屏幕尺寸的精美自适应界面。随着 Android 生态系统的持续发展,用户正通过多样化的设备来使用应用:从手机、可折叠设备到平板电脑、外接显示器、Chromebook,甚至是停车模式下的车载显示器。

WindowManager 1.5 致力于为这种多样化的设备环境提供更完善的工具。

WindowManager 1.5 新功能

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

全新窗口大小类别:大型和超大型

1.5 版本最主要的更新是添加了两个全新的宽度窗口大小类别:大型和超大型。

窗口大小类别是我们官方认可的一套视口断点,可助您设计和开发自适应布局。在 1.5 版本中,我们将此指南的适用范围扩展至比常见平板电脑屏幕更大的尺寸。

以下是全新的宽度断点:

△ 基于显示器宽度的不同窗口大小类别

为什么这些至关重要?

从 Android 16 QPR1 Beta 2 开始,Android 支持外接显示器,这使用户能够将外部显示器连接到他们的设备,从而将这些设备转换为具有大屏、类似桌面设备的工具。

△ 手机已经连接到外部显示器,外部显示器上呈现出一个桌面会话

🔗 外接显示器

https://developer.android.com/develop/ui/compose/layouts/adaptive/support-connected-displays

随着这项新功能的推出,提供一套能适配更大显示器、且具有明确指导意义的指南,便显得至关重要。

在这些尺寸非常大的显示器上,简单地放大平板电脑的 "扩展" 布局并不总能带来最佳用户体验。例如,电子邮件客户端可能会在 "扩展" 窗口大小类别中显示为两个窗格,分别为邮箱和消息,这样便能带来更舒适的观感。但在超大型桌面显示器上,电子邮件客户端可以轻松地同时显示三个甚至四个窗格,比如同时显示邮箱列表、消息列表、完整的邮件内容和一个日历/任务面板。

通过为超大型显示尺寸提供官方断点,WindowManager 1.5 提供了明确的指引,助您推出专为高效、信息密集型桌面体验而设计的布局。

您可以使用 computeWindowSizeClass() 来计算窗口大小类别,这是一个 androidx.window.core.layout 库提供的扩展函数,能够扩展 Set<WindowSizeClass> 类型。 

🔗 computeWindowSizeClass()

https://developer.android.com/reference/kotlin/androidx/window/core/layout/package-summary#(kotlin.collections.Set).computeWindowSizeClass(kotlin.Float,kotlin.Float)

要在项目中启用新的窗口大小类别,只需从 WindowSizeClass.BREAKPOINTS_V2 集合调用该函数,而不是 WindowSizeClass.BREAKPOINTS_V1:

val currentWindowMetrics =
    WindowMetricsCalculator.getOrCreate()
    .computeCurrentWindowMetrics(LocalContext.current)
val sizeClass = WindowSizeClass.BREAKPOINTS_V2
    .computeWindowSizeClass(currentWindowMetrics)

🔗 WindowSizeClass.BREAKPOINTS_V2

https://developer.android.com/reference/androidx/window/core/layout/WindowSizeClass#BREAKPOINTS_V2()

🔗 WindowSizeClass.BREAKPOINTS_V1

https://developer.android.com/reference/androidx/window/core/layout/WindowSizeClass#BREAKPOINTS_V1()

然后,确保您的应用至少有足够的空间,再应用适配的布局:

if(sizeClass.isWidthAtLeastBreakpoint(
    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){
    ...
// window is at least 1200 dp wide
}

自适应库

Compose Material 3 自适应库可助您创建自适应界面,使其能够根据当前窗口配置 (例如窗口大小类别或设备姿态) 自动进行适配。

🔗 Compose Material 3 自适应库

https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive

好消息是,该库已同步更新,支持全新断点!从 1.2 版本开始,默认的 pane scaffold directive 函数支持大型和超大型窗口宽度大小类别。

🔗 1.2 版本

https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#compose_material3_adaptive_version_12_2

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

currentWindowAdaptiveInfo(
    supportLargeAndXLargeWidth = true)

其他改进

🔗 EmbeddingConfiguration#isAutoSaveEmbeddingState

https://developer.android.com/reference/kotlin/androidx/window/embedding/EmbeddingConfiguration?hl=en#isAutoSaveEmbeddingState()

使用指南

要开始在 Android 项目中使用全新的大型和超大型类别以及其他 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")
}

我们致力于创建能够在所有 Android 设备形态上运行的完全自适应应用,而 WindowManager 1.5 让我们朝着这个目标又迈进了一步。您可以查看官方版本说明,获取功能变更和问题修复的完整列表。

🔗 完全自适应应用

https://developer.android.com/adaptive-apps

🔗 官方版本说明

https://developer.android.com/jetpack/androidx/releases/window#version_15_2

乐享编码!欢迎您持续关注 "Android 开发者" 微信公众号,及时了解更多开发技术和产品更新等资讯动态!


阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Jetpack WindowManager Android Development Adaptive UI Large Screens External Displays Activity Embedding Compose Material 3
相关文章