我们很高兴地宣布, 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 Adaptive 库,您可以创建自适应界面,这些界面会根据当前的窗口配置(例如窗口大小类别或设备姿态)自动调整自身。
好消息是,该库已更新为使用新的断点!从 1.2 版(目前处于候选版本阶段)开始,默认窗格框架指令函数支持“大”和“超大”窗口宽度大小类别。
您只需在 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 设备规格上运行的完全自适应应用方面迈出的又一步。如需查看完整的变更列表和 bug 修复列表,请参阅官方版本说明。
祝大家编码顺利!
继续阅读
-
产品资讯
我们很高兴地宣布,在 Android 上将移动设备和桌面设备计算紧密结合方面,我们取得了主要里程碑:在 Android 16 QPR3 版本中,已连接的显示屏支持已正式版!
Francesco Romano • 阅读用时:7 分钟
-
产品资讯
如果您是 Android 开发者,并希望在应用中实现创新的 AI 功能,那么我们最近推出的强大新更新将能满足您的需求。
Thomas Ezan • 阅读用时:3 分钟
-
产品资讯
Android 17 已达到 Beta 版 4,这是此发布周期的最后一个预定 Beta 版,也是应用兼容性和平台稳定性的重要里程碑。
Daniel Galpin • 阅读用时:4 分钟
随时了解最新动态
每周通过电子邮件接收最新的 Android 开发洞见。