WindowManager
| 最新更新 | 稳定版 | 发布候选版 | Beta 版 | Alpha 版 |
|---|---|---|---|---|
| 2025 年 5 月 20 日 | 1.4.0 | - | - | 1.5.0-alpha02 |
声明依赖项
要添加对 WindowManager 的依赖项,您必须将 Google Maven 仓库添加到您的项目中。阅读Google 的 Maven 仓库以获取更多信息。
在应用或模块的 build.gradle 文件中添加您所需工件的依赖项
Groovy
dependencies { implementation "androidx.window:window:1.4.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.4.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.4.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.4.0" // For testing implementation "androidx.window:window-testing:1.4.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.4.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.4.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.4.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.4.0") // For testing implementation("androidx.window:window-testing:1.4.0") }
反馈
您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星形按钮为您已发现的问题投票。
有关更多信息,请参阅问题跟踪器文档。
版本 1.5
版本 1.5.0-alpha02
2025 年 5 月 7 日
androidx.window:window-*:1.5.0-alpha02 已发布。版本 1.5.0-alpha02 包含这些提交。
API 更改
- 为 Large 和 XLarge 添加
WindowSizeClass断点。(I40d85) - 将计算
WindowMetrics扩展到应用上下文。(I8eeeb, b/360934048) - 提供一个 Getter 以直接访问
WindowLayoutInfo(Ie9513) - 引入 API 以自动保存嵌入状态并在应用进程重启时自动恢复嵌入状态。(Ie0295)
- 移除实验性
WindowInsetsAPI。(I68a71) - 隐藏一些构造函数 (I87b8d)
Bug 修复
- 修复了
EmbeddingRule在某些情况下返回不同hashCode的问题。(I748cc)
版本 1.5.0-alpha01
2025 年 3 月 12 日
androidx.window:window-*:1.5.0-alpha01 已发布。版本 1.5.0-alpha01 包含这些提交。
新功能
- 下一个 1.5.0 的初始版本。
版本 1.4
版本 1.4.0
2025 年 5 月 20 日
androidx.window:window-*:1.4.0 已发布。版本 1.4.0 包含这些提交。
自 1.3.0 以来的重要更改
- Activity 嵌入
- 用于自定义启动动画的 API
- 交互式分隔符
ActivityStack锁定- 全屏对话框调暗
- 嵌入式 Activity 窗口信息回调
- 改进的
ActivityStack管理 - 将 Activity 启动到指定的
ActivityStack
WindowMetricsCalculator- 改进可测试性支持
WindowMetrics- 计算
withDp和heightDp的便捷方法 - 将边界检查更新为
isAtLeast并使用下限支持添加新值
- 计算
WindowSizeClass- 添加从
WindowMetrics计算的方法
- 添加从
WindowInfoTracker- 添加 API 以检测设备上支持的姿势
版本 1.4.0-rc02
2025 年 4 月 23 日
androidx.window:window-*:1.4.0-rc02 已发布。版本 1.4.0-rc02 包含这些提交。
Bug 修复
- 修复
ActivityEmbedding的 proguard 崩溃。
版本 1.4.0-rc01
2025 年 3 月 12 日
androidx.window:window-*:1.4.0-rc01 已发布。版本 1.4.0-rc01 包含这些提交。
新功能
- 更新了
WindowSizeClassAPI。 - 更新了 Activity Embedding API。
版本 1.4.0-beta02
2025 年 2 月 12 日
androidx.window:window-*:1.4.0-beta02 已发布。版本 1.4.0-beta02 包含这些提交。
新功能
- 修复了一个只在属性上而不在 getter 上的注解。
版本 1.4.0-beta01
2025 年 1 月 15 日
androidx.window:window-*:1.4.0-beta01 已发布。版本 1.4.0-beta01 包含这些提交。
新功能
- 添加 API 以允许自定义
ActivityEmbedding动画。 - 扩展
WindowMetricsCalculator测试 API 以允许伪造窗口指标。
API 更改
- 隐藏一些构造函数 (I87b8d)
- 允许应用通过
SplitAttributes的动画参数来自定义ActivityEmbedding动画 (If31a8) - 添加了对
watchosDeviceArm64KMP 目标的支持并指定 kotlin 1.9 版本 (Icf15d, b/364652024) - 公开
WindowMetricsCalculatorAPI。(I1cebf)
Bug 修复
- 此库现在使用 JSpecify nullness 注解,它们是类型使用的。Kotlin 开发者应使用以下编译器参数来强制正确使用:
-Xjspecify-annotations=strict(从 Kotlin 编译器 2.1.0 版本开始,这是默认值)。(Ie69ac, b/326456246)
版本 1.4.0-alpha05
2024 年 10 月 16 日
androidx.window:window-*:1.4.0-alpha05 已发布。版本 1.4.0-alpha05 包含这些提交。
新功能
- 添加便捷函数以从
WindowMetrics获取widthDp和heightDp。
API 更改
- 将
widthDp和heightDp添加到WindowMetrics。(Ide026) - 移除实验性
WindowInsetsAPI。(I68a71) - 将边界检查方法名称更新为
isAtLeast(Ib0ab7)
版本 1.4.0-alpha04
2024 年 10 月 2 日
androidx.window:window-*:1.4.0-alpha04 已发布。版本 1.4.0-alpha04 包含这些提交。
API 更改
- 添加了一个从
WindowMetrics计算WindowSizeClass的方法。(874dba) - 为了清晰起见,将
WindowSizeClass方法更改为containsWidthDp、containsHeightDp和containsWindowSizeDp。(fa760d) - 将
WindowAreaController转换为抽象基类。(I90893)
Bug 修复
- 在创建测试
FoldingFeature时添加了对相对边界的支持。(2e6b3e) - 选择
WindowSizeClass时的一般错误修复。
版本 1.4.0-alpha03
2024 年 9 月 18 日
androidx.window:window-*:1.4.0-alpha03 已发布。版本 1.4.0-alpha03 包含这些提交。
新功能
- 添加了一个实用方法,以从
WindowMetrics获取WindowSizeClass。(I83f1f) - 将
isAtLeast重命名为containsBreakpoint。(I85b47) - 为
computeWindowSizeClass添加了使用浮点数的重载。(I3dcb2, b/364677934, b/364677802, b/364680886)
Bug 修复
- 将缺失的断点添加到默认的
WindowSizeClass断点集。 - 修复了在某些情况下紧凑尺寸未正确选择的错误。
版本 1.4.0-alpha02
2024 年 9 月 4 日
androidx.window:window-*:1.4.0-alpha02 已发布。版本 1.4.0-alpha02 包含这些提交。
新功能
添加了对自定义 WindowSizeClass 的支持。
- 打开
WindowSizeClass构造函数,以便开发者可以使用自己的构造函数。 - 添加
isAtLeast实用方法,以便开发者可以处理一系列WindowSizeClass值。 - 在
Set<WindowSizeClass>上添加一个扩展函数,以从 Set 中计算出最佳匹配项。 - 添加 Android 推荐断点的常量。
- 添加与 Android 推荐断点对应的断点集。
API 更改
- 更新
WindowSizeClass的边界方法名称。(If89a6) - 更新
WindowSizeClassAPI 以支持将来添加新的断点值。我们不使用绝对边界,而是使用下限,并建议开发者在处理WindowSizeClass时使用下限检查。WindowWidthSizeClass和WindowHeightSizeClass将被弃用,因为它们将不再进一步开发。(I014ce)
版本 1.4.0-alpha01
2024 年 8 月 7 日
androidx.window:window-*:1.4.0-alpha01 已发布。版本 1.4.0-alpha01 包含这些提交。
新功能
- ActivityStack 锁定允许应用将内容锁定在一个容器中,并使其导航与其他容器隔离。
- 交互式分隔符允许应用在拆分显示中的两个 Activity 之间显示固定或可拖动的分隔符。
- 全屏对话框调暗允许应用指定对话框调暗区域,以调暗整个任务窗口或仅调暗显示对话框的容器。
- 嵌入式 Activity 窗口信息回调允许应用持续接收嵌入式 Activity 窗口的更新。
- 嵌入式动画背景允许应用指定动画背景,在使用
ActivityEmbedding时提高过渡动画质量。 - 改进的 ActivityStack 管理允许应用在使用
ActivityEmbedding时对ActivityStack有更多控制,包括 - 将 Activity 启动到指定的
ActivityStack - 完成一个
ActivityStack
API 更改
新的 API
WindowInfoTracker#supportedPostures- 一个 API,用于确定设备是否支持可折叠设备的桌面模式。添加 WindowAreaSessionPresenter#getWindow
添加 API 以支持
ActivityStack锁定SplitPinRule类SplitController#pinTopActivityStackSplitController#unpinTopActivityStack
添加 API 以启用和配置交互式分隔符
DividerAttributes类SplitAttributes.Builder#setDividerAttributes
添加 API 以设置对话框的
EmbeddingConfiguration和DimAreaBehaviorEmbeddingConfiguration类DimAreaBehavior类ActivityEmbeddingController#setEmbeddingConfiguration
添加 API 以接收嵌入式 Activity 窗口信息更新
EmbeddedActivityWindowInfo类ActivityEmbeddingController#embeddedActivityWindowInfo
添加 API 以设置嵌入动画背景
EmbeddingAnimationBackgroundSplitAttributes.Builder#setAnimationBackground
添加 API 以完成
ActivityStacksActivityEmbeddingController#finishActivityStacks
添加 API 以设置启动
ActivityStackActivityEmbeddingOptions#setLaunchingActivityStack
以下 API 已稳定,不再是实验性的
ActivityEmbeddingController#invalidateVisibleActivityStacks(从 SplitController#invalidateTopVisibleSplitAttributes 移动)ActivityEmbeddingController#getActivityStackSplitController#updateSplitAttributes
添加 1.4 版的 API。(I56774)
Bug 修复
- 修复了某些设备上会返回 UNAVAILABLE 而不是 ACTIVE(当会话处于活动状态时)的 bug。
- 由于 API 支持不稳定,移除了对
vendorApiLevel为 2 的设备上transferActivityToWindowArea的支持。 - 引入 API 以启用 Activity Embedding 可拖动分隔符的拖拽全屏功能。(I645c9)
- 允许应用通过
SplitAttributes的动画参数禁用ActivityEmbedding动画。(Idc01a) - 移除了对新平台 API 访问的手动概括,因为在使用 R8 和 AGP 7.3 或更高版本(例如 R8 版本 3.3)时,这会通过 API 建模自动发生,对于所有使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)的构建,也会自动发生。建议不使用 AGP 的客户端更新到 D8 8.1 或更高版本。有关更多详细信息,请参阅本文。(Ia60e0, b/345472586)
- 允许扩展将动画参数用于
SplitAttributes,以便设备可以将其用于动画过渡。(Iede00) - 隐藏覆盖 API (Ic4251)
- 引入 API 以配置拆分的固定或可拖动分隔符 (Ia7a78)
- 将密度添加到
WindowMetrics(Id6723) - 添加 API 以获取
SupportedPostures。(If557a) - 从实验性 API 中移除
setLaunchingActivityStack(I191cf) - 引入
ActivityEmbeddingController#embeddedActivityWindowInfo(I24312) - 弃用
#getToken并添加#getActivityStackToken(Ie0471) - 引入
embeddedActivityWindowInfo流 API 的回调适配器 (Ida77f) - 添加 overlayInfo 流 API 的回调适配器 (I7264f)
- 引入
WindowSdkExtensionsRule以覆盖extensionsVersion用于测试。(Ifb928) - - 将
#setLaunchingActivityStack迁移到 Bundle 以兼容ActivityOptionsCompat用法。- 用户应传递
activityOptions.toBundle而不是ActvityOptions本身。 - 移除
#setLaunchingActivityStack(Activity)。用户应迁移到使用ActivityEmbeddingController#getActivityStac(Activity)获取ActivityStack,并将ActivityStack传递给#setLaunchingActivityStack。(Ie0ccc)
- 用户应传递
- - 引入
ActivityStack.Token和SpltInfo.Token作为 WM Jetpack 和扩展之间通信的标识符。- 弃用/替换 API 以获取/返回 Token 而不是 IBinder。(I12b24)
- - 引入
ActivityEmbeddingController#invalidateVisibleActivityStacks- 移除
SplitController#invalidateTopVisibleSplitAttributes,因为该功能已整合到#invalidateVisibleActivityStacks中 (I02ef5)
- 移除
- - 添加 API 以设置嵌入配置。(I59a4a)
- - 添加锁定/解锁顶部
ActivityStackandroidx.WindowAPI- 更新演示应用以允许锁定/解锁顶部
ActivityStack(I24dd3)
- 更新演示应用以允许锁定/解锁顶部
- 重新添加
#finishActivityStacks和ActivityEmbeddingOptions(Ic1ab3) - 移除不稳定的 API。(Ibc534, b/302380585)
版本 1.3
版本 1.3.0
2024 年 5 月 29 日
androidx.window:window-*:1.3.0 已发布。版本 1.3.0 包含这些提交。
自 1.2.0 以来的重要更改
- WindowManager Size Classes 的 Kotlin Multiplatform 支持。
版本 1.3.0-rc01
2024 年 5 月 14 日
WindowManager Jetpack 1.3 带来了对 WindowSizeClass 功能的 Kotlin Multiplatform 支持以及多项错误修复。
androidx.window:window-*:1.3.0-rc01 已发布。版本 1.3.0-rc01 包含这些提交。
版本 1.3.0-beta02
2024 年 5 月 1 日
androidx.window:window-*:1.3.0-beta02 已发布。版本 1.3.0-beta02 包含这些提交。
API 更改
- 移除了对创建和使用自定义
WindowSizeClass的支持。(Id1143)
Bug 修复
- 修复了由 proguard 在某些设备实现上剥离某些文件导致的
KotlinReflectionInternalError。(I01b02)
版本 1.3.0-beta01
2024 年 4 月 3 日
androidx.window:window-*:1.3.0-beta01 已发布。版本 1.3.0-beta01 包含这些提交。
版本 1.3.0-alpha03
2024 年 3 月 6 日
androidx.window:window-*:1.3.0-alpha03 已发布。版本 1.3.0-alpha03 包含这些提交。
API 更改
- 将
WindowSizeClassUtil拆分为更具针对性的方法。(Ie9292) - 恢复
WindowSizeClass#compute(I21355, b/324293374)
Bug 修复
- 修复了提供的上下文未正确解包导致的崩溃。(94d10ce , b/318787482)
版本 1.3.0-alpha02
2024 年 2 月 7 日
androidx.window:window-*:1.3.0-alpha02 已发布。版本 1.3.0-alpha02 包含这些提交。
新功能
- 对 Window Size Class API 的 API 界面进行了更新,以提高想要使用自己尺寸类的开发者的灵活性。
API 更改
- 为宽度选择器添加高度约束。(I23393)
- 添加实用函数以从集合中选取
WindowSizeClass。添加实验性评分函数,以便开发者可以编写自己的选择器。添加选择器扩展函数以选取给定边界内最宽的WindowSizeClass。(I0c944) - 打开
WindowSizeClass构造函数,以便可以添加自定义断点。(Ic1ff3) - 添加便捷函数以从宽度、高度和密度创建尺寸类。(If67f4)
Bug 修复
- 修复浮点值截断为 0 时的异常。(272ffac)
版本 1.3.0-alpha01
2023 年 11 月 15 日
androidx.window:window-*:1.3.0-alpha01 已发布。版本 1.3.0-alpha01 包含这些提交。
新功能
- 公开实验性窗口 API,用于访问后屏。
- 用于创建
FoldingFeature的测试 API 现已稳定。 - 用于设置伪造
ActivityEmbedding值的测试 API 现已稳定。 WindowLayoutInfoPublisherRule现在在从UiContext获取值时报告覆盖。WindowInfoTracker向UiContext参数报告折叠功能数据。- 公开设备上的扩展版本。
WindowProperties常量用于用户每应用覆盖PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE— 通知系统应用已选择退出用户面向的宽高比兼容性覆盖。PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE— 通知系统应用已选择退出用户宽高比兼容性覆盖设置的全屏选项
版本 1.2
版本 1.2.0
2023 年 11 月 15 日
androidx.window:window-*:1.2.0 已发布。版本 1.2.0 包含这些提交。
自 1.1.0 以来的重要更改
- 公开实验性窗口 API,用于访问后屏。
- 用于创建
FoldingFeature的测试 API 现已稳定。 - 用于设置伪造
ActivityEmbedding值的测试 API 现已稳定。 WindowLayoutInfoPublisherRule现在在从UiContext获取值时报告覆盖。WindowInfoTracker向UiContext参数报告折叠功能数据。- 公开设备上的扩展版本。
版本 1.2.0-rc01
2023 年 11 月 1 日
androidx.window:window-*:1.2.0-rc01 已发布。版本 1.2.0-rc01 包含这些提交。
新功能
- 公开实验性窗口 API,用于访问后屏。
- 用于创建
FoldingFeature的测试 API 现已稳定。 - 用于设置伪造
ActivityEmbedding值的测试 API 现已稳定。 WindowLayoutInfoPublisherRule现在在从UiContext获取值时报告覆盖。WindowInfoTracker向UiContext参数报告折叠功能数据。- 公开设备上的扩展版本。
版本 1.2.0-beta04
2023 年 10 月 18 日
androidx.window:window-*:1.2.0-beta04 已发布。版本 1.2.0-beta04 包含这些提交。
API 更改
- 移除不稳定的 API。(Ibc534, b/302380585)
版本 1.2.0-beta03
2023 年 9 月 20 日
androidx.window:window-*:1.2.0-beta03 已发布。版本 1.2.0-beta03 包含这些提交。
新功能
- 为需要特定版本扩展才能正常运行的 API 添加
RequiresApi检查。 - 添加 API 以公开设备上的扩展版本。
API 更改
- 在公共 API 上注解所需的窗口 SDK 扩展版本。
- 移除 Activity Embedding 组件中的
isXXXSupported。(Ie3dae)
- 移除 Activity Embedding 组件中的
- 引入
WindowSdkExtensions以报告设备上的扩展版本。- 引入
RequiresWindowSdkExtension以注解所需的最低扩展版本。(I05fd4)
- 引入
- 使
WindowAreaInfo#getCapability不可为空。(I17048)
版本 1.2.0-beta01
2023 年 7 月 26 日
androidx.window:window-*:1.2.0-beta01 已发布。版本 1.2.0-beta01 包含这些提交。
新功能
- 公开实验性窗口 API,用于访问后屏。
- 用于创建
FoldingFeature的测试 API 现已稳定。 - 用于设置伪造
ActivityEmbedding值的测试 API 现已稳定。 WindowLayoutInfoPublisherRule现在在从UiContext获取值时报告覆盖。WindowInfoTracker向UiContext参数报告折叠功能数据。
API 更改
- 将
WindowAreaAPI 标记为实验性,以允许 API 更改继续在 1.3 中稳定发布 (I857f5) - 更新了 API 文件以注解兼容性抑制 (I8e87a, b/287516207)
版本 1.2.0-alpha03
2023 年 6 月 21 日
androidx.window:window-*:1.2.0-alpha03 已发布。版本 1.2.0-alpha03 包含这些提交。
新功能
- 从 API 表面移除了已弃用的 API。
- 添加 API 以支持并发显示。
- 添加一个属性以选择退出强制调整大小覆盖。
- 添加属性以选择退出最小宽高比覆盖。
- 稳定
ActivityEmbeddingRule以支持围绕 Activity Embedding 的单元测试。
API 更改
Bug 修复
- 添加用于强制调整大小覆盖的退出兼容性属性 (Ie7ab1)
- 从扩展接口中移除
SESSION_STATE_CONTENT_INVISIBLE。(I6ed19) - 稳定
ActivityEmbeddingRule以支持围绕 Activity embedding 的单元测试。(I8d6b6) - 添加用于最小宽高比覆盖的退出兼容性属性。(I66390)
- 移除已弃用的 WindowArea API (Ieb67c)
- 将方向请求循环属性重命名为
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED。(Ie2fbd) - 更新窗口区域会话常量名称 (I83675)
- 添加用于在检测到方向请求循环时忽略该循环的退出兼容性属性 (I0a7a2)
- 添加
WindowAreaComponent#STATUS_ACTIVE以表示该功能已处于活动状态。(I62bc3) - 添加
RearDisplayPresentationModeAPI (I0401c) - 移除稳定版的背景颜色 API。(I34c3e)
- 隐藏 Window Area API。(I39de0)
- 添加方法以覆盖
SplitController中的SplitInfo。添加测试方法以创建SplitInfo和ActivityStack的双重功能。(Icd69f) - 使
ActivityRule.Builder的标记可选。(Ib0b44) - 移除
RatioSplitType、ExpandContainersSplit和HingeSplitType。它们现在是SplitType。- 将
#splitEqually()、#expandContainers()和#splitByHinge替换为常量SplitType SPLIT_TYPE_EQUAL、SPLIT_TYPE_EXPAND和SPLIT_TYPE_HINGE - 移除设置铰链拆分类型回退的功能。如果铰链拆分类型因当前设备或窗口状态而无法应用,它将回退到平均拆分父任务容器。使用
SplitController#setSplitAttributesCalculator自定义回退拆分类型。(Ifcc59)
- 将
- 弃用
add/removeSplitCallback- 将
add/removeSplitCallback移至SplitControllerCallbackAdapter - 添加
Flow支持以获取SplitInfo列表 (I7f1b6)
- 将
- 为
ActivityEmbeddingController添加测试规则 (I42e9b) - 将
ActivityOptionsCompat重命名为ActivityEmbeddingOptions(I89301) - 添加
splitSupportStatus以指示 Activity 嵌入是否可用。(I10024) - 引入
SplitAttributes.BackgroundColor以更好地表示DEFAULT值。澄清不支持非不透明动画背景颜色,因此任何非不透明颜色都将被视为默认颜色,这意味着使用当前主题窗口背景颜色。(Ic6b95) - 将
alwaysAllow()和alwaysDisallow()替换为ALWAYS_ALLOW和ALWAYS_DISALLOW。(I3057b) - 为
SplitRule、SplitAttributes、SplitAttributesCalculator添加 API。(I92d23) - 添加
TestActivityStack以创建ActivityStack用于测试- 添加
TestSplitInfo以创建SplitInfo用于测试。(I8e779)
- 添加
- 添加了一种创建伪造
SplitAttributesCalculatorParams的方法,以便开发者可以验证他们自定义的SplitAttributesCalculator(Id4a6e) - 添加
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)和WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)(I66c7f)
版本 1.2.0-alpha02
2023 年 6 月 7 日
androidx.window:window-*:1.2.0-alpha02 已发布。版本 1.2.0-alpha02 包含这些提交。
新功能
- 更新测试 API,使其具有一个用于未指定折叠功能的常量。
- 使用
WindowLayoutInfoPublishRule进行覆盖将覆盖windowLayoutInfo的所有值,包括基于 Context 的 API。
API 更改
- 添加未指定中心折叠功能的常量。(I7530c)
Bug 修复
- 更新
WindowLayoutInfoPublishRule以支持基于Context的WindowLayoutInfo上的覆盖。(I2037a)
版本 1.2.0-alpha01
2023 年 5 月 24 日
androidx.window:window-*:1.2.0-alpha01 已发布。版本 1.2.0-alpha01 包含这些提交。
新功能
稳定了 Activity Embedding 和 WindowLayoutInfoTracker 相关的测试 API。ActivityEmbeddingRule 已升级为稳定版。WindowMetricsCalculatorRule 已升级为稳定版。用于创建 FoldingFeature 进行测试的实用函数已升级为稳定版。
API 更改
- 稳定
ActivityEmbeddingRule以支持围绕 Activity embedding 的单元测试。(I8d6b6) WindowMetrisCalculatorTestRule稳定,允许 JVM 测试的 stub 指标。我们建议使用模拟器以获得准确的结果。- 稳定
WindowLayoutInfo的测试 API 以支持 JVM 测试。(Ie036e) - 为测试折叠功能值添加
IntRange。(I69f7d)
版本 1.1
版本 1.1.0
2023 年 6 月 7 日
androidx.window:window-*:1.1.0 已发布。版本 1.1.0 包含这些提交。
自 1.0.0 以来的重要更改
Activity 嵌入
- 将
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED添加为应用清单中<application>标签的布尔属性。 - 弃用
isSplitSupported并替换为splitSupportStatus,以提供有关拆分功能不可用的更详细信息。 - 添加了
SplitController.SplitSupportStatus嵌套类,以提供splitSupportStatus属性的状态常量。 - 将
SplitController重构为多个模块ActivityEmbeddingController模块用于Activity或ActivityStack相关 API。- 将
isActivityEmbedded从SplitController移至ActivityEmbeddingController。 RuleController模块用于EmbeddingRule相关操作- 移除了
SplitControllerAPI clearRegisteredRules()getSplitRules()initialize()registerRule()unregisterRule()- 添加了
RuleControllerAPI addRule()— 添加规则或更新具有相同标签的规则。removeRule()— 从已注册规则集合中移除规则。setRules()— 建立规则集合。clearRules()— 移除所有已注册规则。parseRules()— 从 XML 规则定义中解析规则。
- 所有模块都需要一个上下文才能通过
#getInstance()方法进行初始化,包括ActivityEmbeddingController#getInstance(Context)SplitController#getInstance(Context)RuleController#getInstance(Context)
- 添加了
EmbeddingAspectRatio类,以定义与显示宽高比相关的类似枚举行为常量。 - 添加了
SplitAttributes类,以定义拆分布局。 - 向
SplitController添加了SplitAttributes计算器函数,以自定义拆分布局setSplitAttributesCalculator(Function)clearSplitAttributesCalculator()isSplitAttributesCalculatorSupported()用于检查设备是否支持SplitAttributesCalculatorAPI
- 添加了
EmbeddingRule#tag字段。 SplitRule中的 API 更新- 添加了
defaultSplitAttributes— 定义拆分的默认拆分布局;替换splitRatio和layoutDirection。 - 添加了 XML 属性
splitRatio和splitLayoutDirection到defaultSplitAttributes的翻译。 - 将最小尺寸定义更改为使用密度无关像素 (dp) 而不是像素。
- 添加了
minHeightDp,默认值为 600dp。 - 将
minWidth更改为minWidthDp,默认值为 600dp。 - 将
minSmallestWidth更改为minSmallestWidthDp,默认值为 600dp。 - 添加了
maxAspectRatioInHorizontal,默认值为ALWAYS_ALLOW。 - 添加了
maxAspectRatioInPortrait,默认值为 1.4。 - 定义了
FinishBehavior嵌套类,以替换完成行为常量。 - 将属性更改应用于
SplitPairRule和SplitPlaceholderRule的 Builder 嵌套类。
- 添加了
- 将
SplitInfo#getSplitRatio()替换为SplitInfo#getSplitAttributes(),以提供额外的拆分相关信息。
WindowLayout
- 向
WindowInfoTracker添加了实验性非 activity UI 上下文支持。 - 向
WindowMetricsCalculator添加了实验性非 activity UI 上下文。
迁移步骤
- 为了使 Activity 嵌入能够以拆分方式显示 Activity,应用必须将
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED属性添加到清单<application>标签中:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />这允许系统提前优化应用的分屏行为。 SplitInfo比例- 检查当前拆分是否堆叠:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType - 检查当前比例:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- 检查当前拆分是否堆叠:
- SplitController 迁移
SplitController.getInstance()更改为SplitController.getInstance(Context)。SplitController.initialize(Context, @ResId int)更改为RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))。SplitController.getInstance().isActivityEmbedded(Activity)更改为ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)。SplitController.getInstance().registerRule(rule)更改为RuleController.getInstance(Context).addRule(rule)。SplitController.getInstance().unregisterRule(rule)更改为RuleController.getInstance(Context).removeRule(rule)。SplitController.getInstance().clearRegisteredRules()更改为RuleController.getInstance(Context).clearRules()。SplitController.getInstance().getSplitRules()更改为RuleController.getInstance(Context).getRules()。
SplitRule属性迁移minWidth和minSmallestWidth现在使用 dp 单位而不是像素。应用可以使用以下调用:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )或简单地将像素中的minWith除以displayMetrics#density。
- 完成行为常量必须迁移到
FinishBehavior枚举类常量FINISH_NEVER更改为FinishBehavior.NEVER。FINISH_ALWAYS更改为FinishBehavior.ALWAYS。FINISH_ADJACENT更改为FinishBehavior.ADJACENT。
- 布局方向必须迁移到
SplitAttributes.LayoutDirectionltr更改为SplitAttributes.LayoutDirection.LEFT_TO_RIGHT。rtl更改为SplitAttributes.LayoutDirection.RIGHT_TO_LEFT。locale更改为SplitAttributes.LayoutDirection.LOCALE。splitRatio必须迁移到SplitAttributes.SplitType.ratio(splitRatio)。
SplitPairRule.Builder迁移SplitPairRule.Builder(filters, minWidth, minSmallestWidth)更改为kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.setLayoutDirection(layoutDirection)和setSplitRatio(ratio)更改为kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )setFinishPrimaryWithSecondary和setFinishSecondaryWithPrimary采用FinishBehavior枚举类常量。详情请参阅“SplitRule 迁移”。- 使用
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)在纵向设备上显示拆分。
SplitPlaceholder.Builder迁移- 仅有
filters和placeholderIntent参数。其他属性移至 setter。详情请参阅“SplitPairRule.Builder 迁移”。 setFinishPrimaryWithPlaceholder采用FinishBehavior枚举类常量。详情请参阅“SplitRule 迁移”。setLayoutDirection(layoutDirection)和setSplitRatio(ratio)更改为:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )- 使用
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)在纵向设备上显示拆分。
- 仅有
版本 1.1.0-rc01
2023 年 5 月 10 日
androidx.window:window-*:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含这些提交。
新功能
- 将
ActivityEmbedding作为稳定 API 发布。 - 各种 Bug 修复。
版本 1.1.0-beta02
2023 年 4 月 5 日
androidx.window:window-*:1.1.0-beta02 已发布。版本 1.1.0-beta02 包含这些提交。
新功能
- 内部修复和清理。
版本 1.1.0-beta01
2023 年 3 月 22 日
androidx.window:window-*:1.1.0-beta01 已发布。版本 1.1.0-beta01 包含这些提交。
Activity 嵌入
- 将
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED添加为应用清单中<application>标签的布尔属性。 - 弃用
isSplitSupported并替换为splitSupportStatus,以提供有关拆分功能不可用的更详细信息。 - 添加了
SplitController.SplitSupportStatus嵌套类,以提供splitSupportStatus属性的状态常量。 - 将
SplitController重构为多个模块ActivityEmbeddingController模块用于Activity或ActivityStack相关 API。- 将
isActivityEmbedded从SplitController移至ActivityEmbeddingController。 RuleController模块用于EmbeddingRule相关操作- 移除了
SplitControllerAPIclearRegisteredRules()getSplitRules()initialize()registerRule()unregisterRule()
- 添加了
RuleControllerAPIaddRule()— 添加规则或更新具有相同标签的规则。removeRule()— 从已注册规则集合中移除规则。setRules()— 建立规则集合。clearRules()— 移除所有已注册规则。- `parseRules() — 从 XML 规则定义中解析规则。
- 所有模块都需要一个上下文才能通过
#getInstance()方法进行初始化,包括ActivityEmbeddingController#getInstance(Context)SplitController#getInstance(Context)RuleController#getInstance(Context)
- 添加了
EmbeddingAspectRatio类,以定义与显示宽高比相关的类似枚举行为常量。 - 添加了
SplitAttributes类,以定义拆分布局。 - 向
SplitController添加了SplitAttributes计算器函数,以自定义拆分布局setSplitAttributesCalculator(Function)clearSplitAttributesCalculator()isSplitAttributesCalculatorSupported()用于检查设备是否支持 SplitAttributesCalculator API
- 添加了
EmbeddingRule#tag字段。 SplitRule中的 API 更新- 添加了
defaultSplitAttributes— 定义拆分的默认拆分布局;替换splitRatio和layoutDirection。 - 添加了 XML 属性
splitRatio和splitLayoutDirection到defaultSplitAttributes的翻译。 - 将最小尺寸定义更改为使用密度无关像素 (dp) 而不是像素。
- 添加了
minHeightDp,默认值为 600dp。 - 将
minWidth更改为minWidthDp,默认值为 600dp。 - 将
minSmallestWidth更改为minSmallestWidthDp,默认值为 600dp。 - 添加了
maxAspectRatioInHorizontal,默认值为ALWAYS_ALLOW。 - 添加了
maxAspectRatioInPortrait,默认值为1.4。 - 定义了
FinishBehavior嵌套类,以替换完成行为常量。 - 将属性更改应用于
SplitPairRule和SplitPlaceholderRule的Builder嵌套类。
- 添加了
- 将
SplitInfo#getSplitRatio()替换为SplitInfo#getSplitAttributes(),以提供额外的拆分相关信息。
WindowLayout
- 向
WindowInfoTracker添加了非 Activity UI 上下文支持。 - 向
WindowMetricsCalculator添加了非 Activity UI 上下文。
迁移步骤
- 为了使 Activity 嵌入能够以拆分方式显示 Activity,应用必须将
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED属性添加到清单<application>标签中:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />这允许系统提前优化应用的分屏行为。 SplitInfo比例- 检查当前拆分是否堆叠:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType - 检查当前比例:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- 检查当前拆分是否堆叠:
SplitController迁移SplitController.getInstance()更改为SplitController.getInstance(Context)。SplitController.initialize(Context, @ResId int)更改为RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))。SplitController.getInstance().isActivityEmbedded(Activity)更改为ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)。SplitController.getInstance().registerRule(rule)更改为RuleController.getInstance(Context).addRule(rule)。SplitController.getInstance().unregisterRule(rule)更改为RuleController.getInstance(Context).removeRule(rule)。SplitController.getInstance().clearRegisteredRules()更改为RuleController.getInstance(Context).clearRules()。SplitController.getInstance().getSplitRules()更改为RuleController.getInstance(Context).getRules()。
SplitRule属性迁移minWidth和minSmallestWidth现在使用 dp 单位而不是像素。应用可以使用以下调用:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )或简单地将像素中的minWith除以displayMetrics#density。
- 完成行为常量必须迁移到
FinishBehavior枚举类常量FINISH_NEVER更改为FinishBehavior.NEVER。FINISH_ALWAYS更改为FinishBehavior.ALWAYS。FINISH_ADJACENT更改为FinishBehavior.ADJACENT。
- 布局方向必须迁移到
SplitAttributes.LayoutDirectionltr更改为SplitAttributes.LayoutDirection.LEFT_TO_RIGHT。rtl更改为SplitAttributes.LayoutDirection.RIGHT_TO_LEFT。locale更改为SplitAttributes.LayoutDirection.LOCALE。splitRatio必须迁移到SplitAttributes.SplitType.ratio(splitRatio)。
SplitPairRule.Builder迁移SplitPairRule.Builder(filters, minWidth, minSmallestWidth)更改为kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.setLayoutDirection(layoutDirection)和setSplitRatio(ratio)更改为kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )setFinishPrimaryWithSecondary和setFinishSecondaryWithPrimary采用FinishBehavior枚举类常量。详情请参阅“SplitRule 迁移”。- 使用
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)在纵向设备上显示拆分。
SplitPlaceholder.Builder迁移- 仅有
filters和placeholderIntent参数。其他属性移至 setter。详情请参阅“SplitPairRule.Builder 迁移”。 setFinishPrimaryWithPlaceholder采用FinishBehavior枚举类常量。详情请参阅“SplitRule 迁移”。setLayoutDirection(layoutDirection)和setSplitRatio(ratio)更改为:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )- 使用
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)在纵向设备上显示拆分。
- 仅有
版本 1.1.0-alpha06
2023 年 2 月 22 日
androidx.window:window-*:1.1.0-alpha06 已发布。版本 1.1.0-alpha06 包含这些提交。
新功能
- 公开从 UI 上下文获取
WindowLayoutInfo的实验版本。
API 更改
- 添加
splitSupportStatus以指示 Activity 嵌入是否可用。(I10024) - 将 UI 上下文
WindowLayoutInfoAPI 标记为实验性。(I58ee0) - 引入了
WindowAreaController和 API,以启用RearDisplay模式,将当前窗口移动到与后置摄像头对齐的显示器。(Iffcbf) - 更新默认背景颜色。(I1ac1b)
- 添加
SplitAttributes参数。(I18bdd) - 为
SplitRule、SplitAttributes、SplitAttributesCalculator添加 API。(I92d23) - 改进了围绕
maxAspectRatio的 API- 将
alwaysAllow()和alwaysDisallow()替换为ALWAYS_ALLOW和ALWAYS_DISALLOW。 - 使用独立文档更新 @see 的 API 文档。(I3057b)
- 将
- 以下构造函数已从公共 API 中移除,因为它们不应由应用调用。
SplitInfo构造函数ActivityStack构造函数 (Ide534)
SplitRule现在采用maxAspectRatioInPortrait/Landscape。它仅允许当父边界的宽高比小于或等于请求的maxAspectRatio时 Activity 进行拆分。(Ia5990)- 将
RuleController#parseRules更改为静态 (I785df) - 改进 ActivityEmbedding 相关的 API
- 对齐 API 命名 - 对多个实例使用 add/remove
registerRule更改为addRuleunregisterRule更改为removeRule- 将
getSplitRules替换为getRules,因为ActivityRule不是拆分规则 - 添加
RuleController#setRules以设置一组规则 - 从
SplitController中提取规则相关 API 到单例RuleController。它们是 addRuleremoveRulegetRulessetRulesparseRules从SplitController中提取#isActivityEmbedded到单例ActivityEmbeddingController。它们是- isActivityEmbedded
移除SplitController#initialize。要从 XML 文件设置规则,请使用RuleController#parseRules和#setRules。此更改前:SplitController.initialize(context, R.xml.static_rules)此更改后:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)- 我们不再区分静态规则和运行时规则。也就是说,调用
#clearRules会清除所有规则,无论它们是通过静态 XML 规则定义注册还是在运行时注册的。要获得SplitController#clearRegisteredRules的旧行为,请使用 XML 资源 ID 调用RuleController#parseRules,然后再次调用RuleController#setRules来设置规则。此更改前:SplitController.getInstance(context).clearRegisteredRules()此更改后:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)(Ib3967) - 改进 SplitRule API
- 对于
SplitRule,使用 DP 而不是像素作为最小尺寸。 - 将
SplitRule#layoutDir重命名为#layoutDirection,将SplitRule Builder#setLayoutDir重命名为Builder#setLayoutDirection。(I3f6d1) - 版本 1.1.0-alpha04
2022 年 11 月 9 日
androidx.window:window-*:1.1.0-alpha04 已发布。版本 1.1.0-alpha04 包含这些提交。
公开一个方法来确定 ActivityStack 是否为空,用于 ActivityEmbedding。
新功能
- 移除了
ActivityEmbeddingAPI 中的实验性 API 标签。 - 隐藏
ActivityRule构造函数,因为 Builder 是首选的构造方式。 - 在
WindowMetrics上添加了一个实验性方法来获取WindowInsets。 - 更新
SplitPlaceholderFinishBehavior以防止完成占位符。完成占位符会导致一些令人困惑的行为。 - 将 val
isEmpty设置为 public 以替换 funisEmpty。
API 更改
- 将
ActivityStack参数活动重命名为activitiesInProcess。(Ia5055) - 移除
ActivityFilter#matchesClassName和ActivityFilter#matchesClassNameOrWildCard,因为它们令人困惑。 - 添加
ActivityFilter#componentName和ActivityFilter#intentAction,以便调用者区分不同的过滤器 (I41f22) - 从实验性 API 中移除
@DeprecatedAPI (I216b3) - 移除 Activity Embedding API 的
@ExperimentalWindowApi(I69ebe) - 隐藏
ActivityRule构造函数,改用 Builder。(If4eb6) - 添加 API 以检查 Activity 是否属于
ActivityFilter的一部分。(Ia43cf) - 更新 API 文件以反映
WindowMetrics和WindowMetricsCalculatorCompat类中的更改 (I667fe) - 更新
ActivityEmbedding属性 Javadoc 和类名 (Ia1386) - 添加要用于 AndroidManifest.xml 的
ActivityEmbedding属性标签名称 (Id1ad4) - 添加
ActivityEmbedding属性标签名称,以便在 AndroidManifest.xml 中使用 (Id1ad4) - 新增 API
SplitPlaceholderFinishBehavior和SplitPlaceholderRule.finishPrimaryWithPlaceholder,这些 API 取代了现有的SplitPlaceholderRule.finishPrimaryWithSecondary,后者定义了占位符 Activity 结束时 Activity Embedding 中关联 Activity 的行为方式。 (I64647)
Bug 修复
- 引入
WindowAreaController和 API,以启用RearDisplay模式,将当前窗口移动到与后置摄像头对齐的显示屏。 (I388ab)
版本 1.1.0-alpha03
2022 年 7 月 27 日
androidx.window:window-*:1.1.0-alpha03 发布。版本 1.1.0-alpha03 包含这些提交。
新功能
- 更新嵌入规则的默认值。
API 更改
- 更新嵌入规则属性的默认值。 (Ic4d35)
版本 1.1.0-alpha02
2022 年 5 月 11 日
androidx.window:window-*:1.1.0-alpha02 发布。版本 1.1.0-alpha02 包含这些提交。
新功能
- 发布适配器库以支持 Java 和 RxJava。
版本 1.1.0-alpha01
2022 年 5 月 11 日
androidx.window:window-*:1.1.0-alpha01 发布。版本 1.1.0-alpha01 包含这些提交。
新功能
- 发布适配器以支持 Java 和 RxJava。
版本 1.1.0-alpha01
2022 年 4 月 20 日
androidx.window:window:1.1.0-alpha01 发布。版本 1.1.0-alpha01 包含这些提交。
新功能
- 修复了应用在后台运行时停止发出折叠功能信息的错误。
- 扩展实验性 ActivityEmbedding API。
API 更改
- 一个用于检查 Activity 是否正在嵌入的公共 API。 (I39eb7)
Bug 修复
版本 1.0
版本 1.0.0
2022 年 1 月 26 日
androidx.window:window-*:1.0.0 发布。版本 1.0.0 包含这些提交。
1.0.0 的主要功能
- 通过
WindowInfoTracker和FoldingFeature支持折叠屏手机。WindowMetricsCalculator用于帮助计算当前的 WindowMetrics。
版本 1.0.0-rc01
2021 年 12 月 15 日
androidx.window:window-*:1.0.0-rc01 发布。版本 1.0.0-rc01 包含这些提交。
新功能
- 通过
WindowInfoTracker添加对折叠屏手机的支持。 - 添加计算当前和最大
WindowMetrics的方法。 - 添加支持测试 API。
版本 1.0.0-beta04
2021 年 11 月 17 日
androidx.window:window-*:1.0.0-beta04 发布。版本 1.0.0-beta04 包含这些提交。
新功能
- 将 WindowInfoRepository 重命名为 WindowInfoTracker。
- 将 Activity 明确设置为 WindowInfoTracker 的方法依赖项。
- 为 WindowMetricsCalculator 添加一个简单的 TestRule,以支持使用 Robolectric 的开发者。
API 更改
- 提取扩展程序 (I25a5f)
- 在 ActivityStack 中添加 isEmpty (I5a4e6)
- 将 WindowInfoRepository 重命名为 WindowInfoTracker。
- 更新 java/rxjava/testing 依赖项以匹配。 (I0da63)
- 为简单的 WindowMetricsCalculator 添加测试规则。 (Ibacdb)
版本 1.0.0-beta03
2021 年 10 月 27 日
androidx.window:window-*:1.0.0-beta03 发布。版本 1.0.0-beta03 包含这些提交。
新功能
- 添加实验性 Activity Embedding API。这个初始布局版本允许并排显示两个 Activity。
API 更改
- 由于无法准确提供,已移除 currentWindowMetrics API。请改用 WindowMetricsCalculator (Icda5f)
- 更新了扩展 API。 (Ica92b)
- 添加了一个新功能的接口,该功能允许在父任务窗口内嵌入 Activity 并将其并排显示。 (I5711d)
- 隐藏了 WindowMetrics 和 WindowLayoutInfo 的构造函数,请改用测试 API。 (I5a1b5)
- 添加 API 以创建假的 WindowLayoutInfo 对象。 (I4a2fd)
Bug 修复
- 修复了内存泄漏。 (I3fc79, b/202989046)
版本 1.0.0-beta02
2021 年 9 月 1 日
androidx.window:window-*:1.0.0-beta02 发布。版本 1.0.0-beta02 包含这些提交。
新功能
- 添加实验性注解以注解实验性 API。 (I9f1b6)
- 添加一个测试方法来创建接受 Rect 的测试 FoldingFeature。与实际的 Activity 相比,这将使使用 Robolectric 进行测试更容易。 (Id1cca)
版本 1.0.0-beta01
2021 年 8 月 18 日
androidx.window:window-*:1.0.0-beta01 发布。版本 1.0.0-beta01 包含这些提交。
新功能
- 移除了旧的常量,并将
FoldingFeature转换为接口。
API 更改
- 移除旧的常量,并将 FoldFeature 设为接口。 (I9a2d5)
Bug 修复
- 依赖
Test Core库的库已升级到1.4.0版,现在将与 Android S 平台版本兼容。 (I88b72, b/189353863)
版本 1.0.0-alpha10
2021 年 8 月 4 日
androidx.window:window-*:1.0.0-alpha10 发布。版本 1.0.0-alpha10 包含这些提交。
新功能
- 将 WindowInfoRepo 重命名为 WindowInfoRepository,并调整相应的类/文件。
- 由于值会随时间变化,将 WindowInfoRepository 中的当前窗口指标转换为 Flow。
- 将 WindowInfoRepoJavaAdapter 重命名为 WindowInfoRepoCallbackAdapter
- 添加帮助方法来创建测试 FoldingFeature 对象
- 更新软件包以根据它们支持的功能对类进行分组。
API 更改
- 将 ActivityExt 重命名为 ActivityExtensions 将 Repo 更改为 Repository。 (I61a16)
- 更新类的包。 (I23ae2)
- 从 WindowInfoRepo 中移除 WindowMetrics (I24663)
- 移除 WindowManager 并使用 WindowInfoRepo
- 将 WindowBackend 设为内部。 (I06d9a)
- 将窗口指标转换为 Flow。
- 将 Java 适配器重命名为 WindowInfoRepoCallbackAdapter
- 移除 callbackFlow,因此不再使用实验性 API。 (Ia4d15)
- 添加帮助方法以创建测试显示功能。
- 将 occlusionMode 更改为 occlusionType (If4cff)
Bug 修复
- 修复了 proguard 错误,其中核心库被移除。
- 修复了 WindowLayoutInfo 未传递给其他订阅者的错误。
- 修复了配置更改不会触发折叠功能更新的错误。
版本 1.0.0-alpha09
2021 年 6 月 30 日
androidx.window:window-*:1.0.0-alpha09 发布。版本 1.0.0-alpha09 包含这些提交。
新功能
- 从整数常量更改为无界枚举。
- 添加测试实用程序以创建测试折叠功能。
API 更改
- 添加帮助方法以创建测试显示功能。 (I3cf54)
- 将
occlusionMode更改为occlusionType。
- 将
Bug 修复
- 当添加多个数据流消费者时,发出初始值。
版本 1.0.0-alpha08
2021 年 6 月 16 日
androidx.window:window-*:1.0.0-alpha08 发布。版本 1.0.0-alpha08 包含这些提交。
新功能
- 发布了一个测试工件,以便在使用 WindowInfoRepository 进行测试时更方便。使用 WindowInfoRepository 获取 DisplayFeatures 和 WindowMetrics 的信息。 (I57f66, Ida620)
版本 1.0.0-alpha07
2021 年 6 月 2 日
androidx.window:window-*:1.0.0-alpha07 发布。版本 1.0.0-alpha07 包含这些提交。
新功能
- 将核心窗口库迁移到 Kotlin。今后将使用协程和 suspend 函数公开异步数据。
- 添加 WindowInfoRepo 作为获取 WindowMetrics 和 WindowLayoutInfo 流的主要交互点。
- 新的
window-java工件,用于公开对 Java 友好的 API,以注册和取消注册回调。 - 新的
window-rxjava2和window-rxjava3工件,用于公开 RxJava 适配的 API。
API 更改
Bug 修复
- 添加新的数据类来表示功能边界。 (I6dcd1)
版本 1.0.0-alpha06
2021 年 5 月 5 日
androidx.window:window:1.0.0-alpha06 发布。版本 1.0.0-alpha06 包含这些提交。
新功能
- 我们已经开始了向 Kotlin 的迁移,并将在下个版本中完成。
- DeviceState 已从公共 API 中移除,请改用 FoldingFeature。
- 我们已从 FoldingFeature 状态中移除
STATE_FLIPPED,因为它目前不被任何用例支持。 - 我们还移除了其他已弃用的 API。
API 更改
- 添加 Kotlin 作为依赖项。
- 将核心库迁移到 Kotlin。 (Idd995)
- 移除了
DisplayFeature构建器。 (I61fa4) - 已从公共 API 中移除
DeviceState,请改用FoldingFeature。 (Id6079) - 从扩展程序中移除设备状态回调。 (I5ea83)
- 从 FoldingFeature 中移除
STATE_FLIPPED。 (I9c4e1) - 移除已弃用的注册方法。 (Ib381b)
版本 1.0.0-alpha05
2021 年 3 月 24 日
androidx.window:window:1.0.0-alpha05 发布。版本 1.0.0-alpha05 包含这些提交。
新功能
我们已在 FoldingFeature 中添加了便利方法,以便应用可以判断该功能是否正在分离、遮挡,并确定铰链的方向。我们还隐藏了铰链类型,因此
我们正在从 WindowManager 中移除同步读取方法。同步读取方法容易出错,因为存在隐式竞态条件。请注册监听器和回调以接收 WindowLayoutInfo 的更新。
API 更改
版本 1.0.0-alpha04
2021 年 3 月 10 日
androidx.window:window:1.0.0-alpha04 发布。版本 1.0.0-alpha04 包含这些提交。
新功能
- 修复了如果 OEM 没有实现则不会发出 WindowLayoutInfo 的错误。现在我们发出一个空的 WIndowLayoutInfo。
- 修复了如果铰链状态在应用后台时发生变化,状态无法正确更新的错误。现在状态应该保持一致。
- 更新我们的 proguard 文件以忽略运行时依赖项的警告。
Bug 修复
- 当 OEM 库缺失时,发出空值。 (Ide935)
版本 1.0.0-alpha03
2021 年 2 月 18 日
androidx.window:window:1.0.0-alpha03 发布。版本 1.0.0-alpha03 包含这些提交。
新功能
- 当 OEM 实现为空时,为 WindowLayoutInfo 发出空值。这应该使该库在更多设备上更易于使用。由于 API 是异步的,仍建议应用编写一些防御性代码并在超时后发出默认值。我们对 OEM 实现没有任何保证,初始值可能会延迟。
Bug 修复
- 当 OEM 库缺失时,发出空值。 (Ide935)
版本 1.0.0-alpha02
2021 年 1 月 27 日
androidx.window:window:1.0.0-alpha02 发布。版本 1.0.0-alpha02 包含这些提交。
新功能
我们已弃用了一些 API,以帮助简化 API 并减少错误。一些值得注意的例子是移除 WindowManager 中的同步读取操作以及弃用 DeviceState。同步读取操作可能导致竞态条件并导致不正确的 UI。
我们已将 DisplayFeature 转换为一个接口,其他功能将继续实现该接口。我们的第一个功能是 FoldingFeature,它现在表示屏幕折叠或铰链。这也包含取代 DeviceState 的铰链状态。
Android 11 中引入了 WindowMetrics,为开发者提供了一种简单的方式来查询窗口的指标,例如其在屏幕上的位置和大小以及任何系统内边距。我们在此版本中已将该 API 回溯,以便开发者可以利用 WindowMetrics 并继续支持旧版 Android。WindowMetrics 可以通过
WindowManager#getCurrentWindowMetrics()和 WindowManager#getMaximumWindowMetrics() API 获取。
API 更改
- 弃用将在下一个 alpha 版本中移除的 API (Ib7cc4)
- 更新
ExtensionInterface以接受明确的 Activity 引用。 (I07ded) - 引入 WindowMetrics API。 (I3ccee)
- 从 WindowManager 中移除同步读取方法 (I69983)
- 将 ExtensionWindowBackend 设为包保护。 (Ied208)
Bug 修复
- 更新
ExtensionInterfaceAPI 以接受视觉上下文。 (I8e827)
外部贡献
- 合并 DeviceState 和 WindowLayoutInfo,以便更轻松地访问数据。 (Id34f4)
版本 1.0.0-alpha01
2020 年 2 月 27 日
androidx.window:window:1.0.0-alpha01 和 androidx.window:window-extensions:1.0.0-alpha01 发布。版本 1.0.0-alpha01 包含这些提交。这是 Window Manager 库的首次发布。
新功能
DisplayFeature:这个新的 API 识别连续平面屏幕表面中的中断,例如铰链或折叠DeviceState:这个新的 API 从已定义姿势列表中提供手机的当前姿势(例如,CLOSED、OPENED、HALF_OPENED等)