Compose Material 3 Adaptive

  
使用 Material 3 自适应库创建可根据当前窗口配置(如窗口尺寸类别或设备姿态)自动调整的自适应界面。该库提供默认的脚手架实现和必要的构建块可组合项,以创建您自己的自定义体验。
最新更新 稳定版 发布候选版 Beta 版 Alpha 版
2025 年 5 月 20 日 1.1.0 - - 1.2.0-alpha06

声明依赖项

要添加对 Compose 的依赖项,您必须将 Google Maven 代码库添加到您的项目中。请阅读Google 的 Maven 代码库了解更多信息。

在您的应用或模块的 build.gradle 文件中添加您所需工件的依赖项

Groovy

dependencies {
    implementation "androidx.compose.material3.adaptive:adaptive:1.2.0-alpha06"
    implementation "androidx.compose.material3.adaptive:adaptive-layout:1.2.0-alpha06"
    implementation "androidx.compose.material3.adaptive:adaptive-navigation:1.2.0-alpha06"
}

Kotlin

dependencies {
    implementation("androidx.compose.material3.adaptive:adaptive:1.2.0-alpha06")
    implementation "androidx.compose.material3.adaptive:adaptive-layout:1.2.0-alpha06"
    implementation "androidx.compose.material3.adaptive:adaptive-navigation:1.2.0-alpha06"
}

有关依赖项的更多信息,请参阅添加构建依赖项

反馈

您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的建议,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星形按钮来为现有问题投票。

创建新问题

有关更多信息,请参阅问题跟踪器文档

Compose Material3 Adaptive 版本 1.2

版本 1.2.0-alpha06

2025 年 5 月 20 日

androidx.compose.material3.adaptive:adaptive-*:1.2.0-alpha06 已发布。版本 1.2.0-alpha06 包含这些提交

新功能

  • 默认的窗格脚手架指令计算函数现在支持 L 和 XL 窗口宽度尺寸类别。

API 变更

  • 使 Modifier.paneExpansionDraggable 提供默认的无障碍语义,并将相关 API 提升为稳定版。(Idb818)
  • 支持浮动窗格的拖动调整大小 (Idadd3)
  • 支持浮动窗格的遮罩 (I9b091)

版本 1.2.0-alpha05

2025 年 5 月 7 日

androidx.compose.material3.adaptive:adaptive-*:1.2.0-alpha05 已发布。版本 1.2.0-alpha05 包含这些提交

新功能

  • Material3 自适应布局现在支持 Levitated 自适应策略,可以将窗格变成浮动弹出窗口。

API 变更

  • 使当前窗口尺寸函数支持多平台 (Ie4172)
  • 为浮动窗格引入窗格动作 (Ic9dc3)
  • 引入浮动策略以实现自适应 (I1ba7c)

错误修复

  • 修复自适应示例中协程范围的使用问题 (7631016)

版本 1.2.0-alpha04

2025 年 4 月 23 日

androidx.compose.material3.adaptive:adaptive-*:1.2.0-alpha04 已发布。版本 1.2.0-alpha04 包含这些提交

新功能

  • 回流策略现在可用于 ListDetailPaneScaffoldSupportingPaneScaffold,它们会在单窗格布局设置下回流相关窗格。

API 变更

  • PaneScaffoldScope 添加可保存状态持有者 (Id9299)
  • 引入回流策略以实现自适应 (I75c6a)

错误修复

  • 修复窗格在第一次过渡时没有动画的错误。 (Ib0415)
  • 修复首选高度不工作的问题。 (I1913b)
  • 修复脚手架指令未正确更新的错误。 (0403ab)

版本 1.2.0-alpha03

2025 年 4 月 9 日

androidx.compose.material3.adaptive:adaptive-*:1.2.0-alpha03 已发布。版本 1.2.0-alpha03 包含这些提交

错误修复

  • 修复在单窗格布局上错误显示拖动手柄的问题。 (806e443 )

依赖项更新

  • 此库现在面向 Kotlin 2.0 语言级别,并需要 KGP 2.0.0 或更高版本。(Idb6b5)

版本 1.2.0-alpha02

2025 年 3 月 26 日

androidx.compose.material3.adaptive:adaptive-*:1.2.0-alpha02 已发布。版本 1.2.0-alpha02 包含这些提交

版本 1.2.0-alpha01

2025 年 3 月 12 日

androidx.compose.material3.adaptive:adaptive-*:1.2.0-alpha01 已发布。版本 1.2.0-alpha01 包含这些提交

API 变更

  • 引入 PaneScaffoldScope.preferredHeight 修饰符,供开发者提供窗格首选高度,这将应用于我们将引入的新自适应策略。(I957dd, b/220960090)
  • ComponentOverride 类型重命名为 Override,将 ComponentOverrideContext 类型重命名为 OverrideScope。(Id973c)
  • 重命名一些组件覆盖方法。(I222b3)

Compose Material3 Adaptive 版本 1.1

版本 1.1.0

2025 年 3 月 12 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0 已发布。版本 1.1.0 包含这些提交

自 1.0.0 版本以来的重要变更

版本 1.1.0-rc01

2025 年 2 月 26 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含这些提交

错误修复

  • 禁用三窗格脚手架预测性返回缩放 (ab6fd0b)

版本 1.1.0-beta02

2025 年 2 月 12 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-beta02 已发布。版本 1.1.0-beta02 包含这些提交

API 变更

  • 更改了 isPredictiveBackInProgressMutableThreePaneScaffoldState 动画函数中的设置方式,以保持状态一致性。(Idc97f)

错误修复

  • NavigableListDetailPaneScaffoldNavigableSupportingPaneScaffold 的默认返回行为已更改为 PopUntilScaffoldValueChange,以与库的其余部分保持一致。(I873f0)
  • 设置窗格脚手架的正确无障碍遍历顺序。 (67d030)
  • 修复窗格内容状态未保存的问题。 (88b0ff)
  • 支持替代拖动的无障碍操作。 (28266d)
  • 窗格分割更改后立即宣布。 (0c3a80)

版本 1.1.0-beta01

2025 年 1 月 29 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-beta01 已发布。版本 1.1.0-beta01 包含这些提交

API 变更

  • 引入工厂函数,分别从起始和结束位置创建偏移类型的窗格展开锚点。(I2eb21)
  • 密封 PaneMotion 接口并移除其默认过渡方法。(Ifc4c7)
  • 引入 API 以获取当前锚点并动画到锚点。(Icf95d)
  • 引入窗格展开的无障碍 API (Icc669)
  • PaneScaffoldParentData.preferredWidth 的类型更改为 DP。(Id98ee)

版本 1.1.0-alpha09

2025 年 1 月 15 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha09 已发布。版本 1.1.0-alpha09 包含这些提交

API 变更

  • 添加并使用新的实验性注解 ExperimentalMaterial3AdaptiveComponentOverrideApi。(Id45aa)
  • 隐藏 ThreePaneScaffoldHorizontalOrder.toLtrOrder。(I6f8d2)
  • ThreePaneScaffoldPredictiveBackHandler 已公开。(I1a995, b/370543873)
  • 已向 ThreePaneScaffoldState 添加 isPredictiveBackInProgress 属性。(I1a995, b/370543873)
  • AnimatedPane 创建覆盖机制,以支持为不同外形规格旁加载实现。(Id7622)

错误修复

  • 修复当结算方向没有锚点时的问题。 (df8257d)

版本 1.1.0-alpha08

2024 年 12 月 12 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha08 已发布。版本 1.1.0-alpha08 包含这些提交

API 变更

  • 引入 currentWindowDpSize 函数。(I99125, b/296300441)
  • 公开 PaneScaffoldParentDataThreePaneScaffoldHorizontalOrder.toLtrOrder() (I2d6b7)
  • 移除 PaneScaffoldMotionScope 并将其转换为 PaneScaffoldTransitionScope 下的一个字段。同时将其重命名为 PaneScaffoldMotionDataProvider,并移除对 PaneMotionData 底层数据结构的访问 - 相反,提供 getter 和循环方法来访问数据。(Id8884)
  • ThreePaneScaffold 创建覆盖机制,以支持为不同外形规格旁加载实现。(I5280f)
  • 默认情况下使窗格展开状态为 null (Ia65f8, b/376394520)

版本 1.1.0-alpha07

2024 年 11 月 13 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha07 已发布。版本 1.1.0-alpha07 包含这些提交

API 变更

  • 移除自适应库中的拖动手柄实现,鼓励人们使用 M3 版本。同时引入一个修饰符,为提供的拖动手柄可组合项提供窗格展开拖动功能。还将 DraggableState 作为实现细节隐藏起来,以便我们以后可以根据需要进行更改。(Ib50cd)
  • 根据 UXR 反馈,将窗格动作自定义的入口点从脚手架函数移至 AnimatedPane。(I10f72)
  • 为窗格展开引入抛掷支持和自定义动画规范。(Ie207d, b/362584341)

错误修复

版本 1.1.0-alpha06

2024 年 10 月 30 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha06 已发布。版本 1.1.0-alpha06 包含这些提交

API 变更

  • PaneScaffoldTransitionScope.motionProgress 添加 FloatRange。(Iac0dd)
  • 在可导航的脚手架中,将导航器参数的类型更改为泛型类型。(I1da6e)

版本 1.1.0-alpha05

2024 年 10 月 16 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha05 已发布。版本 1.1.0-alpha05 包含这些提交

API 变更

  • 引入动画规范类,以确保更一致的动作行为和未来的可扩展性。(I2d3cc)
  • 提供动作类型并将 PaneMotionData 中的 currentXXXXX 重命名为 originXXXX。(I7c61a)

版本 1.1.0-alpha04

2024 年 10 月 2 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha04 已发布。版本 1.1.0-alpha04 包含这些提交

新功能

  • 已向 NavigableListDetailPaneScaffoldNavigableSupportingPaneScaffold 添加预测性返回支持。(I4dc21, b/359616816)

API 变更

  • 已将 ThreePaneScaffoldState 添加到 ThreePaneScaffoldNavigator。导航方法已设为 suspend,以支持带动画的导航。已添加 seekBack 以支持部分导航状态(例如预测性返回)。(I5a651, b/359616816)
  • 添加了 MutableThreePaneScaffoldState 来控制脚手架值之间的过渡。现有的 ThreePaneScaffoldState 已设为只读。(Idb3c6)
  • 公开默认窗格动作实现 (I95a7b)
  • 启用设置窗格展开状态的初始锚点 (Ie41b3, b/362350560)

错误修复

版本 1.1.0-alpha03

2024 年 9 月 18 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha03 已发布。版本 1.1.0-alpha03 包含这些提交

版本 1.1.0-alpha02

2024 年 9 月 4 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha02 已发布。版本 1.1.0-alpha02 包含这些提交

新功能

  • 动作自定义 (I0bf9c), (I80e66) 支持开发者在自适应脚手架状态更改期间更改默认动作。开发者可以从一组默认的进入和退出过渡中进行选择,或使用通过新动作范围提供的信息实现纯自定义过渡。
  • 实现窗格展开拖动手柄的渐变动画 (46e3c69)
  • 使已记住的 PaneExpansionState 可保存 (61ff76f)

API 变更

  • 将缺失的窗格展开 API 添加到脚手架中 (Ic5bc0)
  • ThreePaneScaffoldDestinationItem.content 已重命名为 contentKeyrememberListDetailPaneScaffoldNavigatorrememberSupportingPaneScaffoldNavigator 的默认类型参数已从 Nothing 更改为 Any。(I58749)
  • ThreePaneScaffoldState 标记为稳定 (I64aec)
  • 使拖动手柄参数具有作用域 (Ic0aa2)

版本 1.1.0-alpha01

2024 年 8 月 21 日

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha01 已发布。版本 1.1.0-alpha01 包含这些提交

新功能

  • 引入自适应脚手架的窗格展开支持。

API 变更

  • 公开窗格展开 API (I301d6)
  • 引入 ThreePaneScaffoldState 来控制窗格值过渡。添加了接受此状态的 ListDetailPaneScaffoldSupportingPaneScaffold 的重载。(I5db3b)
  • 引入窗格展开键和键提供者接口 (Id621f)

错误修复

  • 修复排除铰链存在时分区计算错误的问题。 (9dfd483)

Compose Material3 Adaptive 版本 1.0

版本 1.0.0

2024 年 9 月 4 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0 已发布。版本 1.0.0 包含这些提交

1.0.0 版本的主要功能

版本 1.0.0-rc01

2024 年 8 月 21 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-rc01 已发布。版本 1.0.0-rc01 包含这些提交

错误修复

  • 修复排除铰链存在时分区计算错误的问题。 (9dfd483)

版本 1.0.0-beta04

2024 年 6 月 26 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-beta04 已发布。版本 1.0.0-beta04 包含这些提交

错误修复

  • 修复了铰链边界更新时,布局未相应更新的问题。(71e9cf1)

版本 1.0.0-beta03

2024 年 6 月 12 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-beta03 已发布。版本 1.0.0-beta03 包含这些提交

错误修复

  • 修复了 beta02 中由于依赖项解析不正确导致的崩溃问题。

版本 1.0.0-beta02

2024 年 5 月 29 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-beta02 已发布。版本 1.0.0-beta02 包含这些提交

版本 1.0.0-beta01

2024 年 5 月 14 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-beta01 已发布。版本 1.0.0-beta01 包含这些提交

版本 1.0.0-alpha12

2024 年 5 月 1 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-alpha12 已发布。版本 1.0.0-alpha12 包含这些提交

API 变更

  • HingeInfo 添加 isFlat 信息 (Ie0516, b/333784198)
  • 使自适应 API 非实验性 (I1d038)
  • 使自适应布局 API 非实验性 (Id23df)
  • BackNavigationBehavior 从枚举更改为值类 (Id8757)

错误修复

  • 将过渡分数更改为 lambda (I6f5a9)
  • 修复 SizeTracker 的初始状态问题 (18326a9)
  • Posture 等式检查中包含铰链列表 (6687137)

版本 1.0.0-alpha11

2024 年 4 月 17 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-alpha11 已发布。版本 1.0.0-alpha11 包含这些提交

API 变更

  • 使范围接口密封。(Iefa57)
  • 引入 AnimatedPaneScope。(I62d73, b/332750742)
  • 使 AdaptStrategy 密封且稳定。(Ia28b2)
  • 引入 PaneScaffoldDirective 的复制方法。(I9291f)
  • ThreePaneScaffoldScope 标记为实验性。(I9d527)
  • 提供易于使用的支持导航的脚手架 API。(I263f0, b/321010778)

版本 1.0.0-alpha10

2024 年 4 月 3 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-alpha10 已发布。版本 1.0.0-alpha10 包含这些提交

API 变更

  • 使默认首选宽度自适应且可自定义。(Ic3abc)
  • 重命名脚手架指令计算函数。(I10855)
  • 从脚手架 API 中移除内边距和内嵌。(I786f8)
  • 添加不带泛型类型的导航器记住方法。(I607c3)

版本 1.0.0-alpha09

2024 年 3 月 20 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-alpha09 已发布。版本 1.0.0-alpha09 包含这些提交

API 变更

  • ThreePaneScaffoldScope 添加状态过渡字段。(I3d917)
  • 重新排序脚手架参数。(I4dff5)
  • 提供 AnimatedPane 修饰符参数的默认值。(I77dd7)

错误修复

  • 将间隔符大小包含在窗格动作中。(a3174ca)

版本 1.0.0-alpha08

2024 年 3 月 6 日

androidx.compose.material3.adaptive:adaptive-*:1.0.0-alpha08 已发布。版本 1.0.0-alpha08 包含这些提交

新功能

  • 实现切换窗格时的延迟滑入。(I1a38e)

API 变更

  • 移除了 ThreePaneScaffoldState 接口。(I63f23)

版本 1.0.0-alpha07

2024 年 2 月 21 日