我们很高兴地宣布, Jetpack WindowManager 1.5.0 现已发布稳定版!
此版本以 WindowManager 强大的自适应功能为基础,让您能够更轻松地打造出精美、自适应的界面,在各种屏幕尺寸上都能完美呈现。随着 Android 生态系统的不断发展,用户在比以往更多样化的设备上使用应用:从手机和可折叠设备,到平板电脑、外接显示屏、Chromebook,甚至在停车模式下的车载显示屏。
WindowManager 1.5 专注于为此类多样化的设备环境提供更出色的工具。
WindowManager 1.5 中的新功能
此稳定版本引入了适用于超大屏幕的新断点,增强了 activity 嵌入 API,并为计算窗口指标提供了更大的灵活性。
新的窗口大小类:大和超大
1.5 版本中最大的更新是新增了两个宽度窗口大小类:“大”和“超大”。
窗口大小类别是我们官方提供的一组预定义视口断点,可帮助您设计和开发自适应布局。在 1.5 版本中,我们将此指南扩展到了超出典型平板电脑尺寸的屏幕。
以下是新的宽度断点:
- 大:适用于 1200dp 到 1600dp 之间的宽度
- 超大:适用于宽度 ≥1600dp 的设备
基于显示宽度的不同窗口大小类别。
为什么这些很重要?
从 Android 16 QPR1 Beta 2 开始,Android 支持连接显示器,用户可以将外部显示器连接到设备,将其转换为大屏幕桌面式工具。
手机连接到外接显示屏,外接显示屏上显示桌面会话。
随着这项新功能的推出,提供明确的指导来帮助开发者适配大屏设备变得至关重要。
在这些超大屏幕上,仅仅放大平板电脑的展开布局并不总是能提供最佳用户体验。例如,电子邮件客户端可以在展开窗口大小类别中轻松显示两个窗格(邮箱和邮件)。但在超大桌面显示器上,邮件客户端可以优雅地显示三个甚至四个窗格,例如同时显示邮箱、邮件列表、完整邮件内容和日历/任务面板。
WindowManager 1.5 为超大显示屏尺寸提供了官方断点,让您能够明确何时引入专为高效、信息密集的桌面体验而设计的布局。
您可以使用 computeWindowSizeClass() 计算窗口大小类别,该函数是扩展 Set<WindowSizeClass> 类型的 androidx.window.core.layout 库扩展函数。
如需在项目中添加新的窗口大小类别,只需从 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 自适应库可帮助您创建自适应界面,这些界面会根据当前的窗口配置(例如窗口大小类别或设备折叠状态)自动进行调整。
好消息是,该库已经更新到最新断点!从版本 1.2(目前处于候选版本阶段)开始,默认窗格 Scaffold 指令函数支持“大”和“超大”窗口宽度大小类别。
您只需在 Gradle build 文件中声明要使用新的断点,即可选择启用:
currentWindowAdaptiveInfo( supportLargeAndXLargeWidth = true)
其他改进
- Activity 嵌入 - 自动保存和恢复:WindowManager 现在可以自动保存和恢复 activity 嵌入分屏的状态。这有助于在进程重新创建期间保留用户的布局,从而提供更稳定、更一致的体验。开发者无需再手动保存和恢复状态,只需设置 EmbeddingConfiguration#isAutoSaveEmbeddingState 属性,即可选择启用自动保存和恢复状态。
- 扩展的 WindowMetrics:您现在可以从应用上下文(而不仅仅是 activity 上下文)计算 WindowMetrics。这样,您就可以更灵活地从应用的不同部分访问窗口信息。
如何开始
如需开始在 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")
}WindowManager 1.5 是打造完全自适应应用的又一进步,这些应用可在各种 Android 设备规格上运行。如需查看变更和问题修复的完整列表,请参阅官方版本说明。
祝大家编码顺利!
-
产品资讯我们很高兴地宣布,Android 在拉近移动计算与桌面设备(指台式机和/或笔记本电脑时)之间的距离方面迎来了一个主要里程碑:随着 Android 16 QPR3 版本的发布,外接显示器支持功能已正式版!
Francesco Romano • 阅读用时:7 分钟 -
产品资讯随着智能体开发不断加速,Android 工程领域正迈向一个令人振奋的新境界:从辅助性代码补全,跃升至智能体在您的指挥下执行端到端任务。您可以完全自主、灵活地选择要使用的模型和智能体。
Jason Buchel • 阅读用时:3 分钟 -
产品资讯今天,我们分享了如何将“不只是商店”的愿景推进到下一个阶段。从月活跃用户数超过 2.5 亿的“我”标签页,到连接超过 7 亿玩家资料的统一游戏平台,Google Play 始终致力于满足用户的各种需求。
Paul Feng • 阅读用时:3 分钟
每周通过电子邮件接收最新的 Android 开发洞见。