Compose 动画
androidx.compose.animation
androidx.compose.animation.core
androidx.compose.animation.graphics
(请参阅所有 Compose 软件包的 API 参考文档)
最新更新 | 稳定版 | 候选版本 (RC) | Beta 版 | Alpha 版 |
---|---|---|---|---|
2025 年 6 月 4 日 | 1.8.2 | - | - | 1.9.0-alpha04 |
结构
Compose 是 androidx
下的 7 个 Maven 组 ID 的组合。每个组都包含一组特定的功能,并且都有一套自己的版本说明。
此表解释了这些组,并提供了指向各组版本说明的链接。
组 | 说明 |
---|---|
compose.animation | 在 Jetpack Compose 应用中构建动画以丰富用户体验。 |
compose.compiler | 使用 Kotlin 编译器插件转换 @Composable 函数并启用优化。 |
compose.foundation | 使用现成的构建块编写 Jetpack Compose 应用,并扩展基础以构建您自己的设计系统组件。 |
compose.material | 使用现成的 Material Design 组件构建 Jetpack Compose 界面。这是 Compose 的更高层级入口点,旨在提供与 www.material.io 中描述的组件相匹配的组件。 |
compose.material3 | 使用 Material Design 3 组件(Material Design 的下一代演进)构建 Jetpack Compose 界面。Material Design 3 包含更新的主题和组件,以及 Material You 个性化功能(如动态颜色),旨在与新的 Android 12 视觉样式和系统界面保持一致。 |
compose.runtime | Compose 编程模型和状态管理的基本构建块,以及 Compose 编译器插件的核心运行时。 |
compose.ui | Compose 界面与设备交互所需的基本组件,包括布局、绘制和输入。 |
声明依赖项
要添加对 Compose 的依赖项,您必须将 Google Maven 代码库添加到您的项目中。如需了解详情,请阅读Google 的 Maven 代码库。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项
Groovy
dependencies { implementation "androidx.compose.animation:animation:1.8.2" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.animation:animation:1.8.2") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
如需了解有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于改进 Jetpack。如果您发现新问题或对改进此库有任何想法,请告知我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星标按钮,为您现有的问题投票。
如需了解详情,请参阅问题跟踪器文档。
版本 1.9
版本 1.9.0-alpha04
2025 年 6 月 4 日
androidx.compose.animation:animation-*:1.9.0-alpha04
已发布。版本 1.9.0-alpha04 包含这些提交。
版本 1.9.0-alpha03
2025 年 5 月 20 日
androidx.compose.animation:animation-*:1.9.0-alpha03
已发布。版本 1.9.0-alpha03 包含这些提交。
版本 1.9.0-alpha02
2025 年 5 月 7 日
androidx.compose.animation:animation-*:1.9.0-alpha02
已发布。版本 1.9.0-alpha02 包含这些提交。
新功能
- 大幅改进了对共享元素滚动或拖动的支持。更具体地说,当正在过渡的共享元素被滚动时,滚动增量将直接应用于共享元素,而不是导致共享元素追逐新目标。(cacf7b)
版本 1.9.0-alpha01
2025 年 4 月 23 日
androidx.compose.animation:animation-*:1.9.0-alpha01
已发布。版本 1.9.0-alpha01 包含这些提交。
行为变更
- Compose 随附的 Lint 检查现在需要最低 AGP 版本 8.8.2。如果您无法升级 AGP,则可以在
gradle.properties
中使用android.experimental.lint.version=8.8.2
(或更新版本)来单独升级 Lint。要在 IDE 中运行 Compose Lint 检查,需要 Android Studio Ladybug 或更高版本。
新功能
- 提高了共享元素的滚动性能(ea4f1f)
API 变更
- 使用 Kotlin 2.0 发布的项目需要使用 KGP 2.0.0 或更高版本。(Idb6b5)
TabRow
和ScrollableTabRow
已被弃用,取而代之的是它们的 Primary 和 Secondary 变体。Primary 和 Secondary 标签页行性能更高,且与规范更一致。(I918e2)- 添加了
LocalResources
组合本地以查询资源。调用LocalResources.current
将在配置更改时重新组合,因此对stringResource()
等 API 的调用将返回更新的值(I50c13、b/274786917)
bug 修复
- 确保过渡完成后,共享元素会从叠加层中移除(35f359)
- 消除 Transition 中的额外重组(988923)
- 修复了子过渡中断处理(8aed52)
- 确保在提供新的
TransitionState
时重置过渡(57820a)
外部贡献
- 源自Compose
1.8.1
:如果 Steven Schoen 的SeekableTransitionState
中的动画已超出新持续时间,则结束动画。(0c832c)
版本 1.8
版本 1.8.2
2025 年 5 月 20 日
androidx.compose.animation:animation-*:1.8.2
已发布。版本 1.8.2 包含这些提交。
版本 1.8.1
2025 年 5 月 7 日
androidx.compose.animation:animation-*:1.8.1
已发布。版本 1.8.1 包含这些提交。
外部贡献
- 如果
SeekableTransitionState
中的动画已超出新持续时间,则结束动画。感谢 Steven Schoen!(fbcdf7)
版本 1.8.0
2025 年 4 月 23 日
androidx.compose.animation:animation-*:1.8.0
已发布。版本 1.8.0 包含这些提交。
自 1.7.0 以来的重要变更
- 版本 1.8.0 中的重要变更请参阅这篇博文。
- 新的
Modifier.animateBounds
API,用于在预显示范围内对尺寸和位置变化进行动画处理。(94b939) - 带弧线和样条线的 Keyframes 的 API 已最终确定。(89e119)
- 支持
LazyGrid
和 Pager 中的 Lookahead。这包括在滚动、项目组合/处置和项目动画中区分 lookahead 遍数与 approach 遍数,并使用 lookahead 遍数作为滚动和项目动画目标的真实来源。 - 已将
sharedElement
参数命名从 state 更新为sharedContentState
,以实现共享元素 API 的一致性。(9e7df5) AnimatedImageVector
API 套件现在已稳定。(69d7e0)
版本 1.8.0-rc03
2025 年 4 月 9 日
androidx.compose.animation:animation-*:1.8.0-rc03
已发布。版本 1.8.0-rc03 包含这些提交。
版本 1.8.0-rc02
2025 年 3 月 26 日
androidx.compose.animation:animation-*:1.8.0-rc02
已发布。版本 1.8.0-rc02 包含这些提交。
版本 1.8.0-rc01
2025 年 3 月 12 日
androidx.compose.animation:animation-*:1.8.0-rc01
已发布。版本 1.8.0-rc01 包含这些提交。
bug 修复
- 修复了子过渡被错误标记为已中断的问题。(3fa2ce)
版本 1.8.0-beta03
2025 年 2 月 26 日
androidx.compose.animation:animation-*:1.8.0-beta03
已发布。版本 1.8.0-beta03 包含这些提交。
版本 1.8.0-beta02
2025 年 2 月 12 日
androidx.compose.animation:animation-*:1.8.0-beta02
已发布。版本 1.8.0-beta02 包含这些提交。
版本 1.8.0-beta01
2025 年 1 月 29 日
androidx.compose.animation:animation-*:1.8.0-beta01
已发布。版本 1.8.0-beta01 包含这些提交。
版本 1.8.0-alpha08
2025 年 1 月 15 日
androidx.compose.animation:animation-*:1.8.0-alpha08
已发布。版本 1.8.0-alpha08 包含这些提交。
bug 修复
- 修复了由于
MotionFrameOfReferencePlacement
被重置而导致LazyGrid
中animateBounds
的位置动画不正确的问题。(16193b) - 通过将固有查询从顶级 lookahead 根重定向到 lookahead pass,修复了
SharedTransitionLayout
中的固有查询。(a07d12) - 在文档中添加了缺失的
@param
标记。(e5cf67)
版本 1.8.0-alpha07
2024 年 12 月 11 日
androidx.compose.animation:animation-*:1.8.0-alpha07
已发布。版本 1.8.0-alpha07 包含这些提交。
新功能
- Pager 支持 lookahead,通过区分 lookahead 遍数和 approach 遍数来保留项目和消耗滚动。(b/371802474)
bug 修复
- 修复了共享元素已组合但从未测量/放置的罕见崩溃,方法是要求共享元素在渲染到叠加层之前至少渲染一次。(b/371802474)
版本 1.8.0-alpha06
2024 年 11 月 13 日
androidx.compose.animation:animation-*:1.8.0-alpha06
已发布。版本 1.8.0-alpha06 包含这些提交。
API 变更
- 已将
sharedElement
参数命名从state
更新为sharedContentState
,以实现共享元素 API 的一致性。(I5694c、b/375351468) AnimatedImageVector
API 套件现在已稳定。(I7174b、b/261436267)
版本 1.8.0-alpha05
2024 年 10 月 30 日
androidx.compose.animation:animation-*:1.8.0-alpha05
已发布。版本 1.8.0-alpha05 包含这些提交。
新功能
LazyGrid
现在支持 Lookahead。这包括在滚动、项目组合/处置和项目动画中区分 lookahead 遍数与 approach 遍数,并使用 lookahead 遍数作为滚动和项目动画目标的真实来源。
bug 修复
- 当过渡重新创建时,更新
AnimatedContent
尺寸转换的内部状态。这可确保目标尺寸信息始终保持最新。(b/372512085)
版本 1.8.0-alpha04
2024 年 10 月 16 日
androidx.compose.animation:animation-*:1.8.0-alpha04
已发布。版本 1.8.0-alpha04 包含这些提交。
bug 修复
- 修复了导致某些缓动曲线在特定时间分段崩溃的 bug。
- 修复了在 RTL 下
Modifier.animateContentSize
对齐不当的 bug。(Idae6b、b/372055503)
版本 1.8.0-alpha03
2024 年 10 月 2 日
androidx.compose.animation:animation-*:1.8.0-alpha03
已发布。版本 1.8.0-alpha03 包含这些提交。
API 变更
- Kotlin 版本更新至 1.9(I1a14c)
bug 修复
- 修复了
AnimatedContent
尺寸动画中的一个问题,通过始终从当前尺寸跟踪和启动动画来确保连续性。
版本 1.8.0-alpha02
2024 年 9 月 18 日
androidx.compose.animation:animation-*:1.8.0-alpha02
已发布。版本 1.8.0-alpha02 包含这些提交。
版本 1.8.0-alpha01
2024 年 9 月 4 日
androidx.compose.animation:animation-*:1.8.0-alpha01
已发布。版本 1.8.0-alpha01 包含这些提交。
新功能
- 新的
Modifier.animateBounds
API,用于在预显示范围内对尺寸和位置变化进行动画处理。94b9394
API 变更
- 移除带弧线和样条线的 Keyframes 上的实验性标志(89e1199)
bug 修复
- 未找到匹配项时跳过
placeHolderSize
逻辑(77c0160) - 限制
AndroidFlingSpline
中的播放时间,以防止由于播放时间非单调递增而导致崩溃(9d47587) - 修复了
SharedTransitionScope
在某些条件下不绘制项目的问题(b41077b6)
外部贡献
- 阻止在没有过渡运行时设置可查找过渡的
playTime
,由 Steven Schoen 提供。(c2e6e7e6)
版本 1.7
版本 1.7.8
2025 年 2 月 12 日
androidx.compose.animation:animation-*:1.7.8
已发布。版本 1.7.8 包含这些提交。
版本 1.7.7
2025 年 1 月 29 日
androidx.compose.animation:animation-*:1.7.7
已发布。自 1.7.6 版以来无变化。2024 年 12 月 11 日
androidx.compose.animation:animation-*:1.7.6
已发布。版本 1.7.6 包含这些提交。
版本 1.7.5
2024 年 10 月 30 日
androidx.compose.animation:animation-*:1.7.5
已发布。版本 1.7.5 包含这些提交。
bug 修复
- 修复了在 RTL 下
Modifier.animateContentSize
对齐不当的 bug。(Idae6b、b/372055503)
版本 1.7.4
2024 年 10 月 16 日
androidx.compose.animation:animation-*:1.7.4
已发布。版本 1.7.4 包含这些提交。
版本 1.7.3
2024 年 10 月 2 日
androidx.compose.animation:animation-*:1.7.3
已发布。版本 1.7.3 包含这些提交。
版本 1.7.2
2024 年 9 月 18 日
androidx.compose.animation:animation-*:1.7.2
已发布。版本 1.7.2 包含这些提交。
外部贡献
- 阻止在没有过渡运行时设置可查找过渡的
playTime
。感谢 Steven Schoen!(c2e6e7e6)
版本 1.7.1
2024 年 9 月 10 日
- Android 工件无变化。
-desktop
工件已移除,并添加了-jvmStubs
和-linuxx64Stubs
工件。这些目标均不打算使用,它们是帮助 Jetbrains Compose 工作的占位符。
版本 1.7.0
2024 年 9 月 4 日
androidx.compose.animation:animation-*:1.7.0
已发布。
自 1.6.0 以来的重要变更
版本 1.7.0 中的重要变更请参阅这篇博文。
新的共享元素过渡 API
- 新的共享元素过渡 API 等待您的使用和反馈。这些新的实验性 API 允许使用提供的修饰符将布局标记为在布局树中共享,当一组共享内容退出而另一组内容进入时,可以平滑地更改边界。(Icb0b9)
- 新的
scaleInSharedContentToBounds
和scaleOutSharedContentToBounds
,用于在sharedBounds
中缩放内容(I731c1) - 实验性
SharedTransitionScope
现在是接口而不是类。(Iaf856) sharedBounds
新增resizeModes
(ScaleToBounds
和RemeasureToBounds
),用于在缩放和重新测量之间进行选择。之前的scaleIn/OutSharedContentToBounds
API 现已弃用。(I0d41a)
对现有 API 的改进
- 新的
Modifier.animateContentSize
,它接受一个额外的参数用于自定义内容对齐。(I5623a、b/269803907) - 新的实验性
DeferredTargetAnimation
,用于对大小、位置或实例化期间未知的任何其他目标进行动画处理。(I60745) SeekableTransitionState
将snapTo()
替换为seekTo()
,并添加了一个snapTo()
,它可以立即将状态更改为目标状态,而无需任何动画。- 现在可以将
periodicBias
值(浮点型)传递给keyframesWithSpline
,这将使样条的初始速度和最终速度相等。适用于使用样条的可重复动画。偏差表示每个速度(初始速度和最终速度)为了实现周期性而进行修改的程度。(Ic1e6c、b/292114811)
以下 API 已稳定或已移除
AnimatedVisibilityScope.transition
现在是稳定版 API。Modifier.animateEnterExit(..)
也已稳定。(I6c1d1)ApproachLayoutModifierNode
和Modifier.approachLayout
现在已稳定,新增了isMeasurementApproachInProgress()
和isPlacementApproachInProgress()
,分别取代了旧的isMeasurementApproachComplete()
和isPlacementApproachComplete()
。- 移除了已弃用的
intermediateLayout
修饰符。(I3e91c) LookaheadScope
API 已稳定。(I21507)
版本 1.7.0-rc01
2024 年 8 月 21 日
androidx.compose.animation:animation-*:1.7.0-rc01
已发布。版本 1.7.0-rc01 包含这些提交。
版本 1.7.0-beta07
2024 年 8 月 7 日
androidx.compose.animation:animation-*:1.7.0-beta07
已发布。版本 1.7.0-beta07 包含这些提交。
bug 修复
- 修复了
SharedTransitionScope
在某些条件下(通常包括与导航一起使用时)在过渡期间不绘制叠加层项目的问题。(Id65ab、b/347520198)
版本 1.7.0-beta06
2024 年 7 月 24 日
androidx.compose.animation:animation-*:1.7.0-beta06
已发布。版本 1.7.0-beta06 包含这些提交。
bug 修复
- 修复了
SeekableTransition
泄漏过渡状态的问题,方法是在过渡处理后正确清理SnapshotStateObserver
中的观察。(b9c7182) - 修复了当父过渡完成时,子过渡未正确标记为完成的边缘情况。(dc42216)
版本 1.7.0-beta05
2024 年 7 月 10 日
androidx.compose.animation:animation-*:1.7.0-beta05
已发布。版本 1.7.0-beta05 包含这些提交。
bug 修复
- Transition 属性
totalDurationNanos
现在可以在snapshotFlow
中正确读取。
版本 1.7.0-beta04
2024 年 6 月 26 日
androidx.compose.animation:animation-*:1.7.0-beta04
已发布。版本 1.7.0-beta04 包含这些提交。
版本 1.7.0-beta03
2024 年 6 月 12 日
androidx.compose.animation:animation-*:1.7.0-beta03
已发布。版本 1.7.0-beta03 包含这些提交。
版本 1.7.0-beta02
2024 年 5 月 29 日
androidx.compose.animation:animation-*:1.7.0-beta02
已发布。版本 1.7.0-beta02 包含这些提交。
版本 1.7.0-beta01
2024 年 5 月 14 日
androidx.compose.animation:animation-*:1.7.0-beta01
已发布。版本 1.7.0-beta01 包含这些提交。
API 变更
sharedBounds
新增resizeModes
(ScaleToBounds
和RemeasureToBounds
),用于在缩放和重新测量之间进行选择。之前的scaleIn/OutSharedContentToBounds
API 现已弃用。(I0d41a)
外部贡献
- 实验性
SharedTransitionScope
现在是接口而不是类,由 Steven Schoen 提供。(Iaf856、b/338415048、b/338414702)
版本 1.7.0-alpha08
2024 年 5 月 1 日
androidx.compose.animation:animation-*:1.7.0-alpha08
已发布。版本 1.7.0-alpha08 包含这些提交。
API 变更
LookaheadScope
API 已稳定。(I21507)
外部贡献
- 在 Steven Schoen 的
SeekableTransitionState
动画/吸附之后清除开始动画时间。(1ca89529)
版本 1.7.0-alpha07
2024 年 4 月 17 日
androidx.compose.animation:animation-*:1.7.0-alpha07
已发布。版本 1.7.0-alpha07 包含这些提交。
新功能
- 新的共享元素过渡 API 等待您的使用和反馈。这些新的实验性 API 允许使用提供的修饰符将布局标记为在布局树中共享,当一组共享内容退出而另一组内容进入时,可以平滑地更改边界。(Icb0b9)
- 新的
scaleInSharedContentToBounds
和scaleOutSharedContentToBounds
,用于在sharedBounds
中缩放内容(I731c1)
API 变更
AnimatedVisibilityScope.transition
现在是稳定版 API。Modifier.animateEnterExit(..)
也已稳定。(I6c1d1)ApproachLayoutModifierNode
和Modifier.approachLayout
现在已稳定,新增了isMeasurementApproachInProgress()
和isPlacementApproachInProgress()
,分别取代了旧的isMeasurementApproachComplete()
和isPlacementApproachComplete()
。- 移除了已弃用的
intermediateLayout
修饰符。(I3e91c) - 现在可以将
periodicBias
值(浮点型)传递给keyframesWithSpline
,这将使样条的初始速度和最终速度相等。适用于使用样条的可重复动画。偏差表示每个速度(初始速度和最终速度)为了实现周期性而进行修改的程度。(Ic1e6c、b/292114811)
bug 修复
- 修复了之前会限制在 0..1 的过冲和欠冲缓动曲线。(I38747)
版本 1.7.0-alpha06
2024 年 4 月 3 日
androidx.compose.animation:animation-*:1.7.0-alpha06
已发布。版本 1.7.0-alpha06 包含这些提交。
新功能
LazyColumn
和LazyRow
中添加了项目出现和消失动画支持。以前,可以通过添加Modifier.animateItemPlacement()
修饰符来支持放置(重新排序)动画。我们已弃用此修饰符,并引入了一个新的非实验性修饰符Modifier.animateItem()
,它允许您支持所有三种动画类型:出现(淡入)、消失(淡出)和重新排序。(I2d7f7、b/330152398、b/150812265)
bug 修复
- 改进了
updateTransition
API 的性能。
版本 1.7.0-alpha05
2024 年 3 月 20 日
androidx.compose.animation:animation-*:1.7.0-alpha05
已发布。版本 1.7.0-alpha05 包含这些提交。
API 变更
SeekableTransitionState
将snapTo()
替换为seekTo()
,并添加了一个snapTo()
,它可以立即将状态更改为目标状态,而无需任何动画。
版本 1.7.0-alpha04
2024 年 3 月 6 日
androidx.compose.animation:animation-*:1.7.0-alpha04
已发布。版本 1.7.0-alpha04 包含这些提交。
API 变更
- 新的 API
Path.reverse()
用于反转路径方向。(I36348)
版本 1.7.0-alpha03
2024 年 2 月 21 日
androidx.compose.animation:animation-*:1.7.0-alpha03
已发布。版本 1.7.0-alpha03 包含这些提交。
新功能
- 新的
Modifier.animateContentSize
,它接受一个额外的参数用于自定义内容对齐。(I5623a、b/269803907) - 新的实验性
DeferredTargetAnimation
,用于对大小、位置或实例化期间未知的任何其他目标进行动画处理。(I60745)
版本 1.7.0-alpha02
2024 年 2 月 7 日
androidx.compose.animation:animation-*:1.7.0-alpha02
已发布。版本 1.7.0-alpha02 包含这些提交。
bug 修复
KeyframesSpec
的兼容性修复。( I2bdf3, b/322214617)- 修复了在
LazyList
中使用时Modifier.animateContentSize
未正确重置的问题。( I070512, b/322525716) - 修复了在
KeyframesSpec
中使用超出范围的时间戳时出现的IllegalStateException
。( I341b8, b/322839811)
版本 1.7.0-alpha01
2024 年 1 月 24 日
androidx.compose.animation:animation-*:1.7.0-alpha01
已发布。版本 1.7.0-alpha01 包含这些提交。
版本 1.6
版本 1.6.8
2024 年 6 月 12 日
androidx.compose.animation:animation-*:1.6.8
已发布。版本 1.6.8 包含这些提交。
版本 1.6.7
2024 年 5 月 1 日
androidx.compose.animation:animation-*:1.6.7
已发布。版本 1.6.7 包含这些提交。
版本 1.6.6
2024 年 4 月 17 日
androidx.compose.animation:animation-*:1.6.6
已发布。自上次发布以来无更改
版本 1.6.5
2024 年 4 月 3 日
androidx.compose.animation:animation-*:1.6.5
已发布。版本 1.6.5 包含这些提交。
版本 1.6.4
2024 年 3 月 20 日
androidx.compose.animation:animation-*:1.6.4
已发布。版本 1.6.4 包含这些提交。
版本 1.6.3
2024 年 3 月 6 日
androidx.compose.animation:animation-*:1.6.3
已发布。版本 1.6.3 包含这些提交。
版本 1.6.2
2024 年 2 月 21 日
androidx.compose.animation:animation-*:1.6.2
已发布。版本 1.6.2 包含这些提交。
版本 1.6.1
2024 年 2 月 7 日
androidx.compose.animation:animation-*:1.6.1
已发布。版本 1.6.1 包含这些提交。
bug 修复
KeyframesSpec
的兼容性修复。( I2bdf3, b/322214617)
版本 1.6.0
2024 年 1 月 24 日
androidx.compose.animation:animation-*:1.6.0
已发布。版本 1.6.0 包含这些提交。
版本 1.6.0-rc01
2024 年 1 月 10 日
androidx.compose.animation:animation-*:1.6.0-rc01
已发布。版本 1.6.0-rc01 包含这些提交。
版本 1.6.0-beta03
2023 年 12 月 13 日
androidx.compose.animation:animation-*:1.6.0-beta03
已发布。版本 1.6.0-beta03 包含这些提交。
API 变更
- 暂时从
AnimatedContentTransitionScope
中移除了scaleInToFitContainer
和scaleOutToFitContainer
,因为它们需要前瞻性布局(lookahead)。它们将在未来版本中默认启用或选择启用前瞻性布局时可用。
版本 1.6.0-beta02
2023 年 11 月 29 日
androidx.compose.animation:animation-*:1.6.0-beta02
已发布。版本 1.6.0-beta02 包含这些提交。
版本 1.6.0-beta01
2023 年 11 月 15 日
androidx.compose.animation:animation-*:1.6.0-beta01
已发布。版本 1.6.0-beta01 包含这些提交。
API 变更
ExitTransition.Hold
已重命名为ExitTransition.KeepUntilTransitionsFinished
,以使其更明确。( I1c490)- 您现在可以使用
keyframesWithSpline
通过单调样条插值任何 N 维值。它特别适用于插值位置值,例如Offset
、IntOffset
、DpOffset
。作为实验性 API 添加。
bug 修复
- 在
ArcLine
中添加了对 Sweep Gradient 的渲染器支持。( I4d5bb) - 为
PageSize.Fixed
实现了 equals 和 hashcode。( Ie3ede, b/300134276) - 修复了 Window Inset 更改引起的二进制兼容性问题。( Iee695)
- 移除了 Material3 Chip/Button 的 Material 核心层,因为微基准测试显示没有它性能更好。( I55555)
版本 1.6.0-alpha08
2023 年 10 月 18 日
androidx.compose.animation:animation-*:1.6.0-alpha08
已发布。版本 1.6.0-alpha08 包含这些提交。
API 变更
- 已弃用
KeyframesSpecConfig#with
,转而使用KeyframesSpecConfig#using
,后者保留了构建器模式。( I1d769)
版本 1.6.0-alpha07
2023 年 10 月 4 日
androidx.compose.animation:animation-*:1.6.0-alpha07
已发布。版本 1.6.0-alpha07 包含这些提交。
API 变更
- 修复后的可滚动 Tabrows 现在具有 Primary 和 Secondary 变体。它们正确映射到 Material3 中定义的颜色和指示器行为。
PrimaryScrollableTabRow
和SecondaryScrollableTabRow
现在公开滚动状态。( Iec8f5, b/260572337)
版本 1.6.0-alpha06
2023 年 9 月 20 日
androidx.compose.animation:animation-*:1.6.0-alpha06
已发布。版本 1.6.0-alpha06 包含这些提交。
版本 1.6.0-alpha05
2023 年 9 月 6 日
androidx.compose.animation:animation-*:1.6.0-alpha05
已发布。版本 1.6.0-alpha05 包含这些提交。
API 变更
- 添加了
PathEasing
以允许将任意路径提供给缓动曲线。( Idb4b9)
版本 1.6.0-alpha04
2023 年 8 月 23 日
androidx.compose.animation:animation-*:1.6.0-alpha04
已发布。版本 1.6.0-alpha04 包含这些提交。
API 变更
- 添加
SeekableTransitionState
以允许开发者控制过渡的进度。( I8e69d)
版本 1.6.0-alpha03
2023 年 8 月 9 日
androidx.compose.animation:animation-*:1.6.0-alpha03
已发布。版本 1.6.0-alpha03 包含这些提交。
API 变更
- 一种新型的进入/退出过渡,它根据进入和退出动画期间动画容器的大小来缩放内容。
LookaheadScope
Composable 函数和接口现在是稳定的。( Ifb2ce)
版本 1.6.0-alpha02
2023 年 7 月 26 日
androidx.compose.animation:animation-*:1.6.0-alpha02
已发布。版本 1.6.0-alpha02 包含这些提交。
API 变更
版本 1.6.0-alpha01
2023 年 6 月 21 日
androidx.compose.animation:animation-*:1.6.0-alpha01
已发布。版本 1.6.0-alpha01 包含这些提交。
新功能
- 通过在前瞻性布局过程中报告目标大小,使
Modifier.animateContentSize
和AnimatedVisibility
完全集成到前瞻性布局系统。
API 变更
IntrinsincMeasureScope
及其实现(例如MeasureScope
)中的新属性,用于指示当前测量过程是否为前瞻性布局过程。( I7a812)
bug 修复
版本 1.5
版本 1.5.4
2023 年 10 月 18 日
androidx.compose.animation:animation-*:1.5.4
已发布。版本 1.5.4 包含这些提交。
版本 1.5.3
2023 年 10 月 4 日
androidx.compose.animation:animation-*:1.5.3
已发布。此版本没有更改
版本 1.5.2
2023 年 9 月 27 日
androidx.compose.animation:animation-*:1.5.2
已发布。版本 1.5.2 包含这些提交。
版本 1.5.1
2023 年 9 月 6 日
androidx.compose.foundation:foundation-*:1.5.1
已发布。版本 1.5.1 包含这些提交。
bug 修复
- 修复了当
readOnly
为 true 时文本字段显示键盘且可编辑的问题。还修复了当readOnly
从 true 更改为 false 而焦点仍在时键盘不显示的问题。( I34a19, b/246909589)
版本 1.5.1
2023 年 9 月 6 日
androidx.compose.animation:animation-*:1.5.1
已发布。版本 1.5.1 包含这些提交。
版本 1.5.0
2023 年 8 月 9 日
androidx.compose.animation:animation-*:1.5.0
已发布。版本 1.5.0 包含这些提交。
版本 1.5.0-rc01
2023 年 7 月 26 日
androidx.compose.animation:animation-*:1.5.0-rc01
已发布。版本 1.5.0-rc01 包含这些提交。
bug 修复
修复了在基本状态类型(如
MutableIntState
)上调用.value
会报告带有无效修复的 lint 警告的问题。现在,检查将建议迁移到正确的属性。( Iba953, b/287279257)现提供一项可选检查,用于建议将
mutableStateOf()
调用迁移到其对应的基元专用类型。其 lint ID 为AutoboxingStateCreation
。此前,此检查默认对所有项目启用。要在 Android Studio 编辑器和项目的 lint 输出中看到此警告,请通过在模块的build.gradle
或build.gradle.kts
配置中声明warning "AutoboxingStateCreation"
(如所示)来将其严重性从信息性更改为警告(或更高)。( I34f7e)android { lint { warning "AutoboxingStateCreation" } ... }
版本 1.5.0-beta03
2023 年 6 月 28 日
androidx.compose.animation:animation-*:1.5.0-beta03
已发布。版本 1.5.0-beta03 包含这些提交。
版本 1.5.0-beta02
2023 年 6 月 7 日
androidx.compose.animation:animation-*:1.5.0-beta02
已发布。版本 1.5.0-beta02 包含这些提交。
版本 1.5.0-beta01
2023 年 5 月 24 日
androidx.compose.animation:animation-*:1.5.0-beta01
已发布。版本 1.5.0-beta01 包含这些提交。
API 变更
- 移除了重新组合、颜色动画和
AndroidComposeView
中的分配。( Ib2bfa)
bug 修复
- 移除了弹簧动画中的分配(Ie9431)
版本 1.5.0-alpha04
2023 年 5 月 10 日
androidx.compose.animation:animation-*:1.5.0-alpha04
已发布。版本 1.5.0-alpha04 包含这些提交。
API 变更
ContentKey
现在在AnimatedContent
中受支持,以允许更精细地控制何时发生过渡。( Ic069b)
版本 1.5.0-alpha03
2023 年 4 月 19 日
androidx.compose.animation:animation-*:1.5.0-alpha03
已发布。版本 1.5.0-alpha03 包含这些提交。
新功能
LookaheadScope
中SubcomposeLayout
的新默认行为。它允许没有条件槽(例如TabRow
、Scaffold
、BoxWithConstraints
等)的SubcomposeLayouts
与前瞻性动画良好配合。
API 变更
- 新的默认
intermediateMeasurePolicy
,它重用前瞻性布局过程中的测量策略,允许没有条件槽的SubcomposeLayout
子类型(如Scaffold
、TabRow
和BoxWithConstraints
)默认与前瞻性布局一起工作。( Id84c8) - 将中缀函数 `with` 重命名为
togetherWith
,用于组合进入和退出过渡。新的AnimatedContentScope
作为内容 lambda 的接收器。( Ic39ae)
版本 1.5.0-alpha02
2023 年 4 月 5 日
androidx.compose.animation:animation-*:1.5.0-alpha02
已发布。版本 1.5.0-alpha02 包含这些提交。
新功能
- 新的实验性 API,支持
SubcomposeLayout
中的前瞻性布局。这将允许SubcomposeLayout
在LookaheadScope
中正常运行。针对SubcomposeLayout
特定子类型的更多开箱即用支持即将推出。
API 变更
- 新的
SubcomposeLayout
API,它接受一个额外的中间测量策略,用于处理基于前瞻性布局的动画期间的测量/布局逻辑。( I017d3)
版本 1.5.0-alpha01
2023 年 3 月 22 日
androidx.compose.animation:animation-*:1.5.0-alpha01
已发布。版本 1.5.0-alpha01 包含这些提交。
API 变更
AnimatedContent
API 现在已稳定,AnimatedContentScope
已重命名为AnimatedContentTransitionScope
。scaleIn
和scaleOut
现在是稳定的 API。( Iaf54e)
版本 1.4
版本 1.4.3
2023 年 5 月 3 日
androidx.compose.animation:animation:1.4.3
、androidx.compose.animation:animation-core:1.4.3
和 androidx.compose.animation:animation-graphics:1.4.3
已发布,无更改(仅版本升级)。
版本 1.4.2
2023 年 4 月 19 日
androidx.compose.animation:animation:1.4.2
、androidx.compose.animation:animation-core:1.4.2
和 androidx.compose.animation:animation-graphics:1.4.2
已发布,无更改。版本 1.4.2 包含这些提交。
版本 1.4.1
2023 年 4 月 5 日
androidx.compose.animation:animation:1.4.1
、androidx.compose.animation:animation-core:1.4.1
和 androidx.compose.animation:animation-graphics:1.4.1
已发布,无更改。版本 1.4.1 包含这些提交。
版本 1.4.0
2023 年 3 月 22 日
androidx.compose.animation:animation:1.4.0
、androidx.compose.animation:animation-core:1.4.0
和 androidx.compose.animation:animation-graphics:1.4.0
已发布。版本 1.4.0 包含这些提交。
自 1.3.0 以来的重要更改
- Tooling label 在 r
ememberInfiniteTransition
和所有InfiniteTransition
和 Transition 的扩展函数(例如InfiniteTransition#animateColor
)中受支持。( I56ef7)
版本 1.4.0-rc01
2023 年 3 月 8 日
androidx.compose.animation:animation:1.4.0-rc01
、androidx.compose.animation:animation-core:1.4.0-rc01
和 androidx.compose.animation:animation-graphics:1.4.0-rc01
已发布,无更改。版本 1.4.0-rc01 包含这些提交。
版本 1.4.0-beta02
2023 年 2 月 22 日
androidx.compose.animation:animation:1.4.0-beta02
、androidx.compose.animation:animation-core:1.4.0-beta02
和 androidx.compose.animation:animation-graphics:1.4.0-beta02
已发布,无更改。版本 1.4.0-beta02 包含这些提交。
版本 1.4.0-beta01
2023 年 2 月 8 日
androidx.compose.animation:animation:1.4.0-beta01
、androidx.compose.animation:animation-core:1.4.0-beta01
和 androidx.compose.animation:animation-graphics:1.4.0-beta01
已发布,无更改。版本 1.4.0-beta01 包含这些提交。
版本 1.4.0-alpha05
2023 年 1 月 25 日
androidx.compose.animation:animation:1.4.0-alpha05
、androidx.compose.animation:animation-core:1.4.0-alpha05
和 androidx.compose.animation:animation-graphics:1.4.0-alpha05
已发布。版本 1.4.0-alpha05 包含这些提交。
更改
- 自上一个 alpha 版本以来,动画库无更改,仅版本升级
版本 1.4.0-alpha04
2023 年 1 月 11 日
androidx.compose.animation:animation:1.4.0-alpha04
、androidx.compose.animation:animation-core:1.4.0-alpha04
和 androidx.compose.animation:animation-graphics:1.4.0-alpha04
已发布。版本 1.4.0-alpha04 包含这些提交。
新功能
- Tooling label 在
rememberInfiniteTransition
和所有InfiniteTransition
和Transition
的扩展函数(例如InfiniteTransition#animateColor
)中受支持。( I56ef7)
API 变更
InfiniteTransition#TransitionAnimationState
和InfiniteTransition#animations
API 现在是公共的。( I36682)
版本 1.4.0-alpha03
2022 年 12 月 7 日
androidx.compose.animation:animation:1.4.0-alpha03
、androidx.compose.animation:animation-core:1.4.0-alpha03
和 androidx.compose.animation:animation-graphics:1.4.0-alpha03
已发布。版本 1.4.0-alpha03 包含这些提交。
API 变更
- 在使用 Compose 规则的 UI 测试中,在
withFrameNanos
回调期间恢复的协同程序将不会被调度,直到所有帧回调运行完毕。这与 Compose 在正常运行时行为一致。但是,依赖旧行为的测试可能会失败。这应该只会影响直接调用withFrameNanos
或withFrameMillis
的代码,并且其逻辑位于传递给这些函数的回调之外,可能需要移动到回调内部。有关示例,请参阅此变更列表中的动画测试更改。 - 向
TestMonotonicFrameClock
构造函数和工厂函数添加了可选的onPerformTraversals: (Long) -> Unit
参数,用于在withFrameNanos
回调之后但在恢复调用者的协同程序之前运行代码。( Idb413, b/254115946, b/222093277, b/255802670) AnimatedContent
中的新参数,用于工具标签(Iebe2d)
版本 1.4.0-alpha02
2022 年 11 月 9 日
androidx.compose.animation:animation:1.4.0-alpha02
、androidx.compose.animation:animation-core:1.4.0-alpha02
和 androidx.compose.animation:animation-graphics:1.4.0-alpha02
已发布。版本 1.4.0-alpha02 包含这些提交。
API 变更
- 添加
ToolingState
以允许工具更改 Composable 的内部状态(Ie6614)
版本 1.4.0-alpha01
2022 年 10 月 24 日
androidx.compose.animation:animation:1.4.0-alpha01
、androidx.compose.animation:animation-core:1.4.0-alpha01
和 androidx.compose.animation:animation-graphics:1.4.0-alpha01
已发布。版本 1.4.0-alpha01 包含这些提交。
bug 修复
- 修复了 AnimatedContent 中不正确的动画中断问题(b/238662479)
版本 1.3
版本 1.3.3
2023 年 1 月 11 日
androidx.compose.animation:animation:1.3.3
、androidx.compose.animation:animation-core:1.3.3
和 androidx.compose.animation:animation-graphics:1.3.3
已发布。版本 1.3.3 包含这些提交。
- 自 1.3.2 以来无更改。
版本 1.3.2
2022 年 12 月 7 日
androidx.compose.animation:animation:1.3.2
、androidx.compose.animation:animation-core:1.3.2
和 androidx.compose.animation:animation-graphics:1.3.2
已发布。版本 1.3.2 包含这些提交。
bug 修复
- 已更新以支持 androidx.compose.ui 1.3.2
版本 1.3.1
2022 年 11 月 9 日
androidx.compose.animation:animation:1.3.1
、androidx.compose.animation:animation-core:1.3.1
和 androidx.compose.animation:animation-graphics:1.3.1
已发布。版本 1.3.1 包含这些提交。
版本 1.3.0
2022 年 10 月 24 日
androidx.compose.animation:animation:1.3.0
、androidx.compose.animation:animation-core:1.3.0
和 androidx.compose.animation:animation-graphics:1.3.0
已发布。版本 1.3.0 包含这些提交。
自 1.2.0 以来的重要更改
- 新的缓动函数集已稳定
版本 1.3.0-rc01
2022 年 10 月 5 日
androidx.compose.animation:animation:1.3.0-rc01
、androidx.compose.animation:animation-core:1.3.0-rc01
和 androidx.compose.animation:animation-graphics:1.3.0-rc01
已发布。版本 1.3.0-rc01 包含这些提交。
版本 1.3.0-beta03
2022 年 9 月 21 日
androidx.compose.animation:animation:1.3.0-beta03
、androidx.compose.animation:animation-core:1.3.0-beta03
和 androidx.compose.animation:animation-graphics:1.3.0-beta03
已发布。版本 1.3.0-beta03 包含这些提交。
- 自 1.3.0-beta02 以来无更改。
版本 1.3.0-beta02
2022 年 9 月 7 日
androidx.compose.animation:animation:1.3.0-beta02
、androidx.compose.animation:animation-core:1.3.0-beta02
和 androidx.compose.animation:animation-graphics:1.3.0-beta02
已发布。版本 1.3.0-beta02 包含这些提交。
- 从编译器选项中移除了 Kotlin.experimental,因为它已被弃用
版本 1.3.0-beta01
2022 年 8 月 24 日
androidx.compose.animation:animation:1.3.0-beta01
、androidx.compose.animation:animation-core:1.3.0-beta01
和 androidx.compose.animation:animation-graphics:1.3.0-beta01
已发布。版本 1.3.0-beta01 包含这些提交。
版本 1.3.0-alpha03
2022 年 8 月 10 日
androidx.compose.animation:animation:1.3.0-alpha03
、androidx.compose.animation:animation-core:1.3.0-alpha03
和 androidx.compose.animation:animation-graphics:1.3.0-alpha03
已发布。版本 1.3.0-alpha03 包含这些提交。
API 变更
Crossfade
、animateAsState
和Animatable
中的新参数,用于工具标签(Iac08a)- 添加了
atFraction
函数,用于在某个比例而不是特定持续时间定义关键帧。( I20c76, b/232059455)
版本 1.3.0-alpha02
2022 年 7 月 27 日
androidx.compose.animation:animation:1.3.0-alpha02
、androidx.compose.animation:animation-core:1.3.0-alpha02
和 androidx.compose.animation:animation-graphics:1.3.0-alpha02
已发布。版本 1.3.0-alpha02 包含这些提交。
版本 1.3.0-alpha01
2022 年 6 月 29 日
androidx.compose.animation:animation:1.3.0-alpha01
、androidx.compose.animation:animation-core:1.3.0-alpha01
和 androidx.compose.animation:animation-graphics:1.3.0-alpha01
已发布。版本 1.3.0-alpha01 包含这些提交。
API 变更
- 新的
LookaheadLayout
,支持在实际测量/布局之前进行前瞻性布局过程。这允许在布局更改时进行预计算,同时允许前瞻性布局后的测量/布局使用预计算的大小/位置来对大小和位置进行目标动画。SubcomposeLayouts
尚不支持,但将在即将发布的版本中支持。( I477f5)
版本 1.2
版本 1.2.1
2022 年 8 月 10 日
androidx.compose.animation:animation:1.2.1
、androidx.compose.animation:animation-core:1.2.1
和 androidx.compose.animation:animation-graphics:1.2.1
已发布。版本 1.2.1 包含这些提交。
版本 1.2.0
2022 年 7 月 27 日
androidx.compose.animation:animation:1.2.0
、androidx.compose.animation:animation-core:1.2.0
和 androidx.compose.animation:animation-graphics:1.2.0
已发布。版本 1.2.0 包含这些提交。
自 1.1.0 以来的重要更改
- Compose 动画现在支持开发者选项中的“动画时长缩放”设置。
- 大量新的实验性缓动曲线。
AnimatedImageVector
现在支持repeatCount
和repeatMode
版本 1.2.0-rc03
2022 年 6 月 29 日
androidx.compose.animation:animation:1.2.0-rc03
、androidx.compose.animation:animation-core:1.2.0-rc03
和 androidx.compose.animation:animation-graphics:1.2.0-rc03
已发布。版本 1.2.0-rc03 包含这些提交。
- 自 1.2.0-rc02 以来无更改。
版本 1.2.0-rc02
2022 年 6 月 22 日
androidx.compose.animation:animation:1.2.0-rc02
、androidx.compose.animation:animation-core:1.2.0-rc02
和 androidx.compose.animation:animation-graphics:1.2.0-rc02
已发布。版本 1.2.0-rc02 包含这些提交。
bug 修复
- 移除了 Easing 函数上的
ExperimentalEasingApi
注解(Ied441)
版本 1.2.0-rc01
2022 年 6 月 15 日
androidx.compose.animation:animation:1.2.0-rc01
、androidx.compose.animation:animation-core:1.2.0-rc01
和 androidx.compose.animation:animation-graphics:1.2.0-rc01
已发布。版本 1.2.0-rc01 包含这些提交。
API 变更
- Compose 库中的接口现在使用 jdk8 默认接口方法构建(I5bcf1)
版本 1.2.0-beta03
2022 年 6 月 1 日
androidx.compose.animation:animation:1.2.0-beta03
、androidx.compose.animation:animation-core:1.2.0-beta03
和 androidx.compose.animation:animation-graphics:1.2.0-beta03
已发布。版本 1.2.0-beta03 包含这些提交。
API 变更
- 为动画添加了实验性缓动曲线(I64a38)
版本 1.2.0-beta02
2022 年 5 月 18 日
androidx.compose.animation:animation:1.2.0-beta02
、androidx.compose.animation:animation-core:1.2.0-beta02
和 androidx.compose.animation:animation-graphics:1.2.0-beta02
已发布。版本 1.2.0-beta02 包含这些提交。
版本 1.2.0-beta01
2022 年 5 月 11 日
androidx.compose.animation:animation:1.2.0-beta01
、androidx.compose.animation:animation-core:1.2.0-beta01
和 androidx.compose.animation:animation-graphics:1.2.0-beta01
已发布。版本 1.2.0-beta01 包含这些提交。
- 这是 1.2 的第一个 Beta 版本!自上一个 alpha 版本以来没有更改。
版本 1.2.0-alpha08
2022 年 4 月 20 日
androidx.compose.animation:animation:1.2.0-alpha08
、androidx.compose.animation:animation-core:1.2.0-alpha08
和 androidx.compose.animation:animation-graphics:1.2.0-alpha08
已发布。版本 1.2.0-alpha08 包含这些提交。
版本 1.2.0-alpha07
2022 年 4 月 6 日
androidx.compose.animation:animation:1.2.0-alpha07
、androidx.compose.animation:animation-core:1.2.0-alpha07
和 androidx.compose.animation:animation-graphics:1.2.0-alpha07
已发布。版本 1.2.0-alpha07 包含这些提交。
API 变更
AnimatedImageVector
现在支持repeatCount
和repeatMode
(Ia3e75, b/199304067)
版本 1.2.0-alpha06
2022 年 3 月 23 日
androidx.compose.animation:animation:1.2.0-alpha06
、androidx.compose.animation:animation-core:1.2.0-alpha06
和 androidx.compose.animation:animation-graphics:1.2.0-alpha06
已发布。版本 1.2.0-alpha06 包含这些提交。
API 变更
- 更新了矢量可绘制文件的解析,以支持自动镜像,如果当前布局方向为 RTL,则翻转
VectorPainter
的内容。( I79cd9, b/185760237)
bug 修复
- 更新了 Vector graphics API 以使用正确的可组合注解
@VectorComposable
而不是@UiComposable
(I942bc)
版本 1.2.0-alpha05
2022 年 3 月 9 日
androidx.compose.animation:animation:1.2.0-alpha05
、androidx.compose.animation:animation-core:1.2.0-alpha05
和 androidx.compose.animation:animation-graphics:1.2.0-alpha05
已发布。版本 1.2.0-alpha05 包含这些提交。
API 变更
- 万岁!Compose 动画现在支持开发者选项中的“动画时长缩放”设置。( I5a4fc, b/161675988)
版本 1.2.0-alpha04
2022 年 2 月 23 日
androidx.compose.animation:animation:1.2.0-alpha04
、androidx.compose.animation:animation-core:1.2.0-alpha04
和 androidx.compose.animation:animation-graphics:1.2.0-alpha04
已发布。版本 1.2.0-alpha04 包含这些提交。
版本 1.2.0-alpha03
2022 年 2 月 9 日
androidx.compose.animation:animation:1.2.0-alpha03
、androidx.compose.animation:animation-core:1.2.0-alpha03
和 androidx.compose.animation:animation-graphics:1.2.0-alpha03
已发布。版本 1.2.0-alpha03 包含这些提交。
版本 1.2.0-alpha02
2022 年 1 月 26 日
androidx.compose.animation:animation:1.2.0-alpha02
、androidx.compose.animation:animation-core:1.2.0-alpha02
和 androidx.compose.animation:animation-graphics:1.2.0-alpha02
已发布。版本 1.2.0-alpha02 包含这些提交。
版本 1.2.0-alpha01
2022 年 1 月 12 日
androidx.compose.animation:animation:1.2.0-alpha01
、androidx.compose.animation:animation-core:1.2.0-alpha01
和 androidx.compose.animation:animation-graphics:1.2.0-alpha01
已发布。版本 1.2.0-alpha01 包含这些提交。
API 变更
- 使用
AnimatedImageVector.animatedVectorResource
代替animatedVectorResource
加载<animated-vector>
资源文件。- 使用
rememberAnimatedVectorResource
代替AnimatedImageVector#painterFor
渲染AnimatedImageVector
。( I9c300)
- 使用
bug 修复
- 为 Animatable 和 AnimationResult 添加 toString 方法。( Icd3a6)
依赖项更新
- 现在依赖于 Kotlin
1.6.10
。
版本 1.1
版本 1.1.1
2022 年 2 月 23 日
androidx.compose.animation:animation:1.1.1
、androidx.compose.animation:animation-core:1.1.1
和 androidx.compose.animation:animation-graphics:1.1.1
已发布。版本 1.1.1 包含这些提交。
bug 修复
- 修复了
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
中的NullPointerException
(aosp/1947059, b/206677462) - 修复了在 Android 上从剪贴板读取剪贴板内容时导致的崩溃。( I06020, b/197769306)
- 修复了
LazyVerticalGrid
中的 RTL(aosp/1931080, b/207510535)
版本 1.1.0
2022 年 2 月 9 日
androidx.compose.animation:animation:1.1.0
、androidx.compose.animation:animation-core:1.1.0
和 androidx.compose.animation:animation-graphics:1.1.0
已发布。版本 1.1.0 包含这些提交。
自 1.0.0 以来的重要更改
- 稳定支持 Android 12 的过度滚动效果
- 改进了触摸目标尺寸
- 请注意,与 Compose 1.0 相比,Material 组件将扩展其布局空间,以符合 Material 无障碍功能指南中有关触摸目标尺寸的要求。例如,Button 触摸目标将扩展到最小 48x48dp 的大小,即使您将 Button 的大小设置为更小也是如此。这使 Compose Material 与 Material Design Components 的行为保持一致,如果您混合使用 Views 和 Compose,则可提供一致的行为。此更改还确保当您使用 Compose Material 组件创建 UI 时,将满足触摸目标无障碍功能的最低要求。
- 稳定支持导航栏
- 将许多以前的实验性 API 升级为稳定版
- 支持更高版本的 Kotlin
版本 1.1.0-rc03
2022 年 1 月 26 日
androidx.compose.animation:animation:1.1.0-rc03
、androidx.compose.animation:animation-core:1.1.0-rc03
和 androidx.compose.animation:animation-graphics:1.1.0-rc03
已发布。版本 1.1.0-rc03 包含这些提交。
bug 修复
- 已更新以支持 Compose Material 1.1.0-rc03
版本 1.1.0-rc01
2021 年 12 月 15 日
androidx.compose.animation:animation:1.1.0-rc01
和 androidx.compose.animation:animation-core:1.1.0-rc01
已发布。版本 1.1.0-rc01 包含这些提交。
API 变更
- 使用
AnimatedImageVector.animatedVectorResource
代替animatedVectorResource
加载<animated-vector>
资源文件。- 使用
rememberAnimatedVectorResource
代替AnimatedImageVector#painterFor
渲染AnimatedImageVector
。( I9c300)
- 使用
版本 1.1.0-beta04
2021 年 12 月 1 日
androidx.compose.animation:animation:1.1.0-beta04
、androidx.compose.animation:animation-core:1.1.0-beta04
和 androidx.compose.animation:animation-graphics:1.1.0-beta04
已发布。版本 1.1.0-beta04 包含这些提交。
新功能
- 已更新以兼容 Kotlin
1.6.0
版本 1.1.0-beta03
2021 年 11 月 17 日
androidx.compose.animation:animation:1.1.0-beta03
、androidx.compose.animation:animation-core:1.1.0-beta03
和 androidx.compose.animation:animation-graphics:1.1.0-beta03
已发布。版本 1.1.0-beta03 包含这些提交。
API 变更
- 添加了新的修饰符 Modifier.onPlaced 以允许观察位置更改。因此,可以根据观察到的位置更改对子修饰符的偏移量进行额外更改。( I558fd)
Crossfade 中新的 contentKey 支持。ContentKey 将用于动画系统的相等性检查。因此,可以通过为不同状态指定适当的 contentKey 来实现自定义状态差异化。
ContentKey 也将用作保存和恢复内容的键。( I2e055, b/197907070)
版本 1.1.0-beta02
2021 年 11 月 3 日
androidx.compose.animation:animation:1.1.0-beta02
、androidx.compose.animation:animation-core:1.1.0-beta02
和 androidx.compose.animation:animation-graphics:1.1.0-beta02
已发布。版本 1.1.0-beta02 包含这些提交。
bug 修复
- 支持工具的新动画 API。具体来说,它们允许工具检查 Transitions 中的动画及其配置。( I4116e)
版本 1.1.0-beta01
2021 年 10 月 27 日
androidx.compose.animation:animation:1.1.0-beta01
、androidx.compose.animation:animation-core:1.1.0-beta01
和 androidx.compose.animation:animation-graphics:1.1.0-beta01
已发布。版本 1.1.0-beta01 包含这些提交。
API 变更
- 支持工具的新动画 API。具体来说,它们允许工具检查 Transitions 中的动画及其配置。( I4116e)
版本 1.1.0-alpha06
2021 年 10 月 13 日
androidx.compose.animation:animation:1.1.0-alpha06
、androidx.compose.animation:animation-core:1.1.0-alpha06
和 androidx.compose.animation:animation-graphics:1.1.0-alpha06
已发布。版本 1.1.0-alpha06 包含这些提交。
版本 1.1.0-alpha05
2021 年 9 月 29 日
androidx.compose.animation:animation:1.1.0-alpha05
、androidx.compose.animation:animation-core:1.1.0-alpha05
和 androidx.compose.animation:animation-graphics:1.1.0-alpha05
已发布。版本 1.1.0-alpha05 包含这些提交。
API 变更
EnterTransition
、ExitTransition
和一些AnimatedVisibility
API 已稳定。MutableTransitionState.isIdle
也不再是实验性的。( I5072d)重大更改:Enter/ExitTransition 工厂中的 lambda 已移至参数列表的最后一个位置。( I5072d)
版本 1.1.0-alpha04
2021 年 9 月 15 日
androidx.compose.animation:animation:1.1.0-alpha04
、androidx.compose.animation:animation-core:1.1.0-alpha04
和 androidx.compose.animation:animation-graphics:1.1.0-alpha04
已发布。版本 1.1.0-alpha04 包含这些提交。
版本 1.1.0-alpha03
2021 年 9 月 1 日
androidx.compose.animation:animation:1.1.0-alpha03
、androidx.compose.animation:animation-core:1.1.0-alpha03
和 androidx.compose.animation:animation-graphics:1.1.0-alpha03
已发布。版本 1.1.0-alpha03 包含这些提交。
新功能
- 更新了 Compose
1.1.0-alpha03
以依赖 Kotlin1.5.30
。( I74545)
版本 1.1.0-alpha02
2021 年 8 月 18 日
androidx.compose.animation:animation:1.1.0-alpha02
、androidx.compose.animation:animation-core:1.1.0-alpha02
和 androidx.compose.animation:animation-graphics:1.1.0-alpha02
已发布。版本 1.1.0-alpha02 包含这些提交。
API 变更
- StartOffset 现在在 repeatable 和 infiniteRepeatable 中受支持,作为延迟开始时间或在动画开始前快进动画的方式。此开始偏移不会重复。( Ic679f, b/195079908)
- 新的进入/退出过渡,用于缩放。它可以与其他类型的进入/退出过渡结合使用。( I372da, b/191325593)
版本 1.1.0-alpha01
2021 年 8 月 4 日
androidx.compose.animation:animation:1.1.0-alpha01
、androidx.compose.animation:animation-core:1.1.0-alpha01
和 androidx.compose.animation:animation-graphics:1.1.0-alpha01
已发布。版本 1.1.0-alpha01 包含这些提交。
API 变更
AnimatedImageVector
和相关 API 现在位于新的androidx.compose.animation:animation-graphics
模块中。( I60873)
bug 修复
- 将
InfiniteAnimationPolicy
移动到 :compose:ui (I5eb09, b/160602714)
版本 1.0
版本 1.0.5
2021 年 11 月 3 日
androidx.compose.animation:animation:1.0.5
和 androidx.compose.animation:animation-core:1.0.5
已发布。版本 1.0.5 包含这些提交。
bug 修复
- 修复了跟踪 derivedStateOf 实例时崩溃的问题(aosp/1792247)
版本 1.0.4
2021 年 10 月 13 日
androidx.compose.animation:animation:1.0.4
和 androidx.compose.animation:animation-core:1.0.4
已发布。版本 1.0.4 包含这些提交。
依赖项更新
- 已更新以依赖 Kotlin
1.5.31
版本 1.0.3
2021 年 9 月 29 日
androidx.compose.animation:animation:1.0.3
和 androidx.compose.animation:animation-core:1.0.3
已发布。版本 1.0.3 包含这些提交。
依赖项更新
- 已更新以依赖 Kotlin
1.5.30
版本 1.0.2
2021 年 9 月 1 日
androidx.compose.animation:animation:1.0.2
和 androidx.compose.animation:animation-core:1.0.2
已发布。版本 1.0.2 包含这些提交。
已更新以支持 Compose 1.0.2
版本。Compose 1.0.2
仍与 Kotlin 1.5.21
兼容。
版本 1.0.1
2021 年 8 月 4 日
androidx.compose.animation:animation:1.0.1
和 androidx.compose.animation:animation-core:1.0.1
已发布。版本 1.0.1 包含这些提交。
依赖项更新
- 已更新以依赖 Kotlin
1.5.21
。
版本 1.0.0
2021 年 7 月 28 日
androidx.compose.animation:animation:1.0.0
和 androidx.compose.animation:animation-core:1.0.0
已发布。版本 1.0.0 包含这些提交。
1.0.0 的主要功能
这是 Compose 的第一个稳定版本。请参阅官方的Compose 发布博客了解更多详情!
已知问题
如果您正在使用 Android Studio Bumblebee Canary 4 或 AGP
7.1.0-alpha04
/7.1.0-alpha05
,您可能会遇到以下崩溃java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
要修复此问题,请暂时将您的 minSdkVersion 增加到 24+,在您的
build.gradle
文件中。此问题将在下一版本的 Android Studio Bumblebee 和 AGP7.1
中修复。( b/194289155)
版本 1.0.0-rc02
2021 年 7 月 14 日
androidx.compose.animation:animation:1.0.0-rc02
和 androidx.compose.animation:animation-core:1.0.0-rc02
已发布。版本 1.0.0-rc02 包含这些提交。
版本 1.0.0-rc01
2021 年 7 月 1 日
androidx.compose.animation:animation:1.0.0-rc01
和 androidx.compose.animation:animation-core:1.0.0-rc01
已发布。版本 1.0.0-rc01 包含这些提交。
bug 修复
- 将
InfiniteAnimationPolicy
移动到androidx.compose.ui:ui
(I5eb09, b/160602714)
版本 1.0.0-beta09
2021 年 6 月 16 日
androidx.compose.animation:animation:1.0.0-beta09
和 androidx.compose.animation:animation-core:1.0.0-beta09
已发布。版本 1.0.0-beta09 包含这些提交。
API 变更
- 新的
AnimatedContent
Composable。它使用可自定义的ContentTransform
来管理内容更改,当新目标内容进入和初始内容离开时。可以组合不同的进入和退出过渡以生成自定义的外观和感觉。AnimatedContent
作为内容转换的一部分,会自动调整其大小以匹配传入的内容。( I2c3df) - 已移除
ManualFrameClock
。如果您需要控制动画,请改用composeTestRule.mainClock
。( I3c3e8, b/189951065)
已添加配置文件规则
此版本为以下 compose 模块添加了配置文件规则(I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
配置文件规则是什么?
库的配置文件规则在位于
src/main
或同等目录中的文本文件baseline-prof.txt
中指定。该文件每行指定一条规则,其中规则是用于匹配库中的方法或类的模式。这些规则的语法是人类可读的 ART 配置文件格式的超集,该格式在使用adb shell profman --dump-classes-and-methods ...
时使用。这些规则有两种形式,分别针对方法或类。方法规则将具有以下模式
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
类规则将具有以下模式
<CLASS_DESCRIPTOR>
此处,
<FLAGS>
是字符H
、S
和P
中的一个或多个,用于指示此方法是否应标记为“热点”、“启动时”或“启动后”。<CLASS_DESCRIPTOR>
是目标方法所属类的描述符。例如,类androidx.compose.runtime.SlotTable
将具有描述符Landroidx/compose/runtime/SlotTable;
。<METHOD_SIGNATURE>
是方法的签名,包括方法的名称、参数类型和返回类型。例如,LayoutNode
上的方法fun isPlaced(): Boolean
具有签名isPlaced()Z
。这些模式可以包含通配符(
**
、*
和?
),以便单个规则包含多个方法或类。
这些规则有什么用?
带有
H
标志的方法表示此方法是“热点”方法,应预先编译。带有
S
标志的方法表示它是在启动时调用的方法,应预先编译以避免在启动时编译和解释方法的开销。带有
P
标志的方法表示它是在启动后调用的方法。此文件中存在的类表示它在启动期间使用,应在堆中预分配,以避免类加载的开销。
这如何运作?
- 库可以定义这些规则,这些规则将打包在 AAR 工件中。当包含这些工件的应用程序被构建时,这些规则将合并在一起,合并后的规则用于构建特定于应用程序的紧凑二进制 ART 配置文件。然后,当应用程序安装在设备上时,ART 可以利用此配置文件来预先编译应用程序的特定子集,以提高应用程序的性能,尤其是首次运行的性能。请注意,这不会对可调试应用程序产生任何影响。
版本 1.0.0-beta08
2021 年 6 月 2 日
androidx.compose.animation:animation:1.0.0-beta08
和 androidx.compose.animation:animation-core:1.0.0-beta08
已发布。版本 1.0.0-beta08 包含这些提交。
bug 修复
- 现在
detectDragGesures
、detectVerticalGestures
和detectHorizontalGestures
将自动消耗位置变化,无需在 onDrag 回调中调用 change.consumePositionChange (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()
已更改为报告此修饰符在修饰符链中的坐标,而不是应用所有修饰符后的布局坐标。这意味着现在修饰符的顺序会影响报告的坐标。( Ieb67d, b/177926591)
版本 1.0.0-beta07
2021 年 5 月 18 日
androidx.compose.animation:animation:1.0.0-beta07
和 androidx.compose.animation:animation-core:1.0.0-beta07
已发布。版本 1.0.0-beta07 包含这些提交。
API 变更
- 新的
AnimatedVisibility
API 支持在MutableTransitionState
中指定可见性。这还允许通过currentState
和isIdle
在AnimatedVisibility
外部观察动画状态。- Transition 中新的子过渡支持
- 使用 AnimationScope.transition 在 AnimatedVisibility 中支持自定义退出/进入过渡动画
- 所有 AnimatedVisibility 子项都可访问新的 animateEnterExit 修饰符
- 已弃用接受
initiallyVisible
参数的 AnimatedVisibility API (I702f3)
版本 1.0.0-beta06
2021 年 5 月 5 日
androidx.compose.animation:animation:1.0.0-beta06
和 androidx.compose.animation:animation-core:1.0.0-beta06
已发布。版本 1.0.0-beta06 包含这些提交。
版本 1.0.0-beta05
2021 年 4 月 21 日
androidx.compose.animation:animation:1.0.0-beta05
和 androidx.compose.animation:animation-core:1.0.0-beta05
已发布。版本 1.0.0-beta05 包含这些提交。
bug 修复
- ui-test-manifest 和 ui-tooling-data 中的 AndroidManifest 文件现在与 Android 12 兼容(I6f9de, b/184718994)
版本 1.0.0-beta04
2021 年 4 月 7 日
androidx.compose.animation:animation:1.0.0-beta04
和 androidx.compose.animation:animation-core:1.0.0-beta04
已发布。版本 1.0.0-beta04 包含这些提交。
API 变更
- 已移除
RowScope
、ColumnScope
、BoxScope
、BoxWithConstraintsScope
的公共实例。( I4e83e, b/181869067)
版本 1.0.0-beta03
2021 年 3 月 24 日
androidx.compose.animation:animation:1.0.0-beta03
和 androidx.compose.animation:animation-core:1.0.0-beta03
已发布。版本 1.0.0-beta03 包含这些提交。
版本 1.0.0-beta02
2021 年 3 月 10 日
androidx.compose.animation:animation:1.0.0-beta02
和 androidx.compose.animation:animation-core:1.0.0-beta02
已发布。版本 1.0.0-beta02 包含这些提交。
bug 修复
- 强制限制实验性 API 的公共使用(I6aa29, b/174531520)
版本 1.0.0-beta01
2021 年 2 月 24 日
androidx.compose.animation:animation:1.0.0-beta01
和 androidx.compose.animation:animation-core:1.0.0-beta01
已发布。版本 1.0.0-beta01 包含这些提交。
这是 Compose 1.0.0 Beta 的第一个版本。
API 变更
InteractionState
已被[Mutable]InteractionSource
取代- 接口负责发出/收集交互事件。
- 不再将
interactionState = remember { InteractionState() }
传递给Button
和Modifier.clickable()
等组件,而是使用interactionSource = remember { MutableInteractionSource() }
。 - 不再使用:
Interaction.Pressed in interactionState
,而是使用 InteractionSource 上的扩展函数,例如 InteractionSource.collectIsPressedAsState()。 - 对于复杂用例,您可以使用 InteractionSource.interactions 观察交互流。有关更多信息,请参阅 InteractionSource 文档和示例。
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- smoothScrollBy 和 scrollBy 方法的软件包已更改为
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473) - 尺寸修饰符已重命名。Modifier.width/height/size 已重命名为 requiredWidth/requiredHeight/requiredSize。Modifier.preferredWidth/preferredHeight/preferredSize 已重命名为 width/height/size。 (I5b414)
- Orientation 已移至 foundation 包中。VelocityTracker 已从 ui.gesture 移至 ui.input.pointer。 (Iff4a8, b/175294473)
- AnimationClockObservable 及其子类已移除。AnimatedFloat 已移除。 (Icde52, b/177457083)
- Modifier.draggable 现在接受 DraggableState 而非简单的 lambda 表达式。您可以通过
rememberDraggableState { delta -> }
创建状态以获得与之前相同的行为 (Ica70f, b/175294473) - animate、animatedValue、AnimatedValue API 已移除 (If27bc, b/177457083)
- AnimationEndReason.Interrupted 已移除。如果动画被中断,将抛出 CancellationException。 (I2cbbc, b/179695417)
- TargetAnimation API 已移除。 (If47d1, b/177457083)
版本 1.0.0-alpha12
2021 年 2 月 10 日
androidx.compose.animation:animation:1.0.0-alpha12
和 androidx.compose.animation:animation-core:1.0.0-alpha12
已发布。1.0.0-alpha12 版本包含以下提交。
API 变更
Modifier.pointerInput
现在需要 remember 键来指示何时为新依赖项重新启动指针输入检测协程。 (I849cd)- Bounds 已重命名为 DpRect (I4b32a)
- 在整个动画系统中,将 AnimationSpec 的参数名称统一为 animationSpec。此外,将 Enter/ExitTransition 限制为接受 FiniteAnimationSpec。 (Ie47c5, b/177457083)
- Animatable.snapTo 和 Animatable.stop 现在是 suspend 函数 (If4288)
- 与我们之前移除了
state { 0 }
可组合项并推广使用如remember { mutableStateOf(0) }
的方式类似,我们将移除savedInstanceState { 0 }
可组合项。您应该改用rememberSaveable { mutableStateOf(0) }
,如果 MutableState 中使用的类型可以存储在 Bundle 中,它将自动保存和恢复。如果以前您传递的是自定义 saver 对象,那么现在您需要使用 rememberSaveable 的新重载,它具有stateSaver
参数。用法将如下所示:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - 更新了 Crossfade 的方法签名,使其与动画系统的其余部分更加一致。 (Ib05ed, b/177457083)
- rememberSavedInstanceState() 已重命名为 rememberSaveable() 并移至 androidx.compose.runtime.saveable 包中。 (I1366e, b/177338004)
- RestorableStateHolder 已重命名为 SaveableStateHolder 并移至 androidx.compose.runtime.saveable 包中。内部方法 RestorableStateProvider 已重命名为 SaveableStateProvider。通用类型已移除,因此您现在只需将 Any 作为键传递。不再需要 Experimental 注解。 (I0902e, b/174598702)
- 更新了 Modifier.animateContentSize API,使其与动画系统的其余部分保持一致。 (I0bf75, b/177457083)
- AnimatedValue/Float 现已弃用。请改用 Animatable。 (I71345, b/177457083)
- tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 和 pressIndicaitonGestureFilter 已弃用。请改用 Modifier.clickable 或 Modifier.pointerInput 搭配 detectTapGestures 函数。 (I6baf9, b/175294473)
- 引入了
InfiniteAnimationPolicy
协程上下文元素,该元素将应用于无限动画中。默认情况下不安装任何策略,但在使用ComposeTestRule
运行测试时除外。 (I50ec4, b/151940543) - 已从一些很少使用的类中移除了解构和 copy() 方法。 (I26702, b/178659281)
- 动画播放时间现在统一为纳秒 (If776a)
- compose:runtime-dispatch 工件现已弃用。MonotonicFrameClock 现在可以在 compose:runtime 中找到,AndroidUiDispatcher 可以在 compose:ui 中找到。 (Ib5c36)
- 添加了
Animation.isInfinite
和VectorizedAnimationSpec.isInfinite
,它们指示动画是否为无限。这可以在动画实现中使用,以对这类动画进行特殊处理。例如,可以显示一个特殊的“剩余时间”消息,或者在测试期间可以取消动画以防止无限期等待空闲。 (Iebb05, b/151940543) - 动画时间类型使用 Long 而不是 Uptime (Ie3aa7, b/177420019)
版本 1.0.0-alpha11
2021 年 1 月 28 日
androidx.compose.animation:animation:1.0.0-alpha11
和 androidx.compose.animation:animation-core:1.0.0-alpha11
已发布。1.0.0-alpha11 版本包含以下提交。
API 变更
- 基于 TransitionDefinition 的 Transition 已弃用 (I0ac57)
- 为 Transition 和子动画添加了 label 字段,以便在工具中显示 (I619fb)
- animateAsState 现在是 animateFooAsState,其中 Foo 是被动画变量的类型。例如 Float、Dp、Offset 等 (Ie7e25)
- 新的 InfiniteTransition,可以运行任意数量的子动画。 (I1da81)
- 更改 Material 有状态参数接口,使其具有 @Composable 函数,这些函数返回
State<T>
。添加 Animatable.asState() 以便更轻松地将 Animatable 转换为 State。还将 animateElevation 更改为 Animatable 上的 suspend 扩展。 (If613c)
bug 修复
- onCommit、onDispose 和 onActive 已弃用,取而代之的是 SideEffect 和 DisposableEffect API (If760e)
- 现在支持 updateTransition 中的初始状态 (Initial State) (Ifd51d)
- 已为 Image 和 Icon 添加了内容描述参数。它用于向辅助功能服务提供描述 (I2ac4c)
- invalidate 和 compositionReference() 现已弃用,分别由 currentRecomposeScope 和 rememberCompositionReference 取代。 (I583a8)
- Duration 和 Uptime 将替换为 Long 毫秒,这一步将移除指针输入对这些类的依赖。 (Ia33b2, b/175142755, b/177420019)
- clickable、toggleable 和 selectable 现在可以在组合之外创建 (I0a130, b/172938345, b/175294473)
- Easing 已更改为函数式接口 (Ib14e5)
- LazyColumn/LazyRow/LazyVerticalGrid 作用域新增
items(count: Int)
工厂方法。items(items: List)
和itemsIndexed(items: List)
现在是扩展函数,因此在使用时必须手动导入它们。数组的新扩展重载:items(items: Array) 和 itemsIndexed(Array) (I803fc, b/175562574) - 在测试中利用 TestCoroutineDispatcher (I532b6)
- 移除了 PointerInputData 并修改了 PointerInputChange,使其拥有 PointerInputData 的所有字段。将 PointerInputEvent 和 PointerInputEventData 设置为内部,因为它们未在任何公共 API 中使用。 (Ifff97, b/175142755)
版本 1.0.0-alpha10
2021 年 1 月 13 日
androidx.compose.animation:animation:1.0.0-alpha10
和 androidx.compose.animation:animation-core:1.0.0-alpha10
已发布。1.0.0-alpha10 版本包含以下提交。
API 变更
- 修改了 Velocity,使其具有组件部分和数学运算。 (Ib0447)
- 将
@ExperimentalTesting
重命名为@ExperimentalTestApi
,以与类似的实验性 API 注解保持一致 (Ia4502, b/171464963) - 将 Position 重命名为 DpOffset 并移除了 getDistance() (Ib2dfd)
- 移除了 Any.identityHashCode() 公共 API (I025d7)
bug 修复
- 新的基于协程的
Animatable
API,确保其动画之间互斥。新的 DecayAnimationSpec 支持多维衰减动画 (I820f2, b/168014930) animate()
现已由animateAsState()
取代,后者返回一个State<T>
而不是T
。这可以带来更好的性能,因为失效范围可以缩小到读取 State 值的位置。 (Ib179e)
版本 1.0.0-alpha09
2020 年 12 月 16 日
androidx.compose.animation:animation:1.0.0-alpha09
和 androidx.compose.animation:animation-core:1.0.0-alpha09
已发布。1.0.0-alpha09 版本包含以下提交。
API 变更
- 将 Dp.VectorConverter、Position.VectorConverter 等移至 animation-core,并弃用了旧的 VectorConveters (If0c4b)
- 引入了一整套新的 Transition API,改进了易用性,并支持动态添加动画和动态计算动画目标。这些 API 被标记为实验性,以便与基于 TransitionDefinition 的 API 轻松区分。 (Ia7fe3)
bug 修复
- offset 修饰符中的 Lambda 表达式现在返回 IntOffset 而不是 Float。 (Ic9ee5, b/174137212, b/174146755)
- 弃用 LazyColumnFor, LazyRowFor, LazyColumnForIndexed 和 LazyRowForIndexed。请改用 LazyColumn 和 LazyRow。 (I5b48c)
- 对于 suspending 指针输入 API,将 HandlePointerInputScope 重命名为 AwaitPointerEventScope,并将 handlePointerInput() 重命名为 awaitPointerEventScope()。 (Idf0a1, b/175142755)
- 用于创建 InfiniteRepeatableSpec 的新 infiniteRepeatable 函数 (I668e5)
- 移除了 ExperimentalPointerInput 注解 (Ia7a24)
版本 1.0.0-alpha08
2020 年 12 月 2 日
androidx.compose.animation:animation:1.0.0-alpha08
和 androidx.compose.animation:animation-core:1.0.0-alpha08
已发布。1.0.0-alpha08 版本包含以下提交。
API 变更
- 添加了可组合 lambda 参数命名和位置的 lint 检查,以检查与 Compose 准则的一致性。根据 lint 检查和指导,还将一些使用
children
作为其尾随 lambda 名称的 API 迁移到content
。 (Iec48e) - 之前弃用的 API 已移除
Modifier.onPositioned
已移除,请改用Modifier.onGloballyPositioned
。Modifier.onDraw
已移除,请改用Modifier.onDrawBehind
。Modifier.plus
已移除,请改用Modifier.then
。Color.Unset
已移除,请改用Color.Unspecified
。PxBounds
类已移除,请改用Rect
。- (Ie9d02, b/172562222)
- 暂时添加了选项,允许 TestAnimationClock 由 MonotonicFrameClock 驱动。 (I1403b, b/173402197)
bug 修复
- 将 Modifier.drawLayer 重命名为 Modifier.graphicsLayer。还根据 API 委员会的反馈,将相关类更新为 GraphicsLayer。 (I0bd29, b/173834241)
- 添加了 Modifier.scale/rotate API 作为 drawLayer 的便利方法。
- 将 Modifier.drawOpacity 重命名为 Modifier.alpha
- 将 Modifier.drawShadow 重命名为 Modifier.shadow (I264ca, b/173208140)
- 将 PointerInputData 的 uptime 和 position 字段设为非 null。 (Id468a)
- offsetPx 修饰符已重命名为 offset。它们现在接受 lambda 参数而不是 State。 (Ic3021, b/173594846)
- 用于在协程中运行动画的新 API (Ied662)
- 弃用了以
Ambient
为后缀命名的 Ambients,并根据其他 Ambients 和 Compose API 准则,将其替换为以 Ambient 为前缀的新属性。 (I33440) - 测试中的时间控制(TestAnimationClock 及其用法)现在是实验性的 (I6ef86, b/171378521)
- 移除了旧的 ui-test 模块及其存根 (I3a7cb)
RestorableStateHolder.withRestorableState
函数已重命名为RestorableStateProvider
(I66640)- Alignment 接口已更新并实现为函数式。 (I46a07, b/172311734)
版本 1.0.0-alpha07
2020 年 11 月 11 日
androidx.compose.animation:animation:1.0.0-alpha07
和 androidx.compose.animation:animation-core:1.0.0-alpha07
已发布。1.0.0-alpha07 版本包含以下提交。
bug 修复
- foundation AmbientTextStyle、ProvideTextStyle 和 AmbientContentColor 已弃用。请改用 Material 库中可用的新版本。对于非 Material 应用程序,您应该创建自己的设计系统特定的主题环境,以便在您自己的组件中使用。 (I74acc, b/172067770)
- foundation.Text 已弃用并替换为 material.Text。对于不消费主题值的基本、无偏向文本 API,请参阅 androidx.compose.foundation.BasicText。 (If64cb)
- MeasureResult 已移出 MeasureScope。 (Ibf96d, b/171184002)
- 一些布局相关的符号已从 androidx.compose.ui 移至 androidx.compose.layout.ui。 (I0fa98, b/170475424)
版本 1.0.0-alpha06
2020 年 10 月 28 日
androidx.compose.animation:animation:1.0.0-alpha06
和 androidx.compose.animation:animation-core:1.0.0-alpha06
已发布。1.0.0-alpha06 版本包含以下提交。
API 变更
- 在 ComposeTestRule 中启用转换;从 ComposeTestRule 中移除启用闪烁光标的选项。 (If0de3)
版本 1.0.0-alpha05
2020 年 10 月 14 日
androidx.compose.animation:animation:1.0.0-alpha05
和 androidx.compose.animation:animation-core:1.0.0-alpha05
已发布。1.0.0-alpha05 版本包含以下提交。
API 变更
- 新的 Animation 接口和子类:这些类存储动画的开始和结束条件,因此只通过播放时间就可以查询值和速度 (Ie95bd, b/163329867)
bug 修复
- OnPositionedModifier 已重命名为 OnGloballyPositionedModifier,onPositioned() 已重命名为 onGloballyPositioned()。 (I587e8, b/169083903)
弃用了 contentColor() 和 currentTextStyle() API,分别用 AmbientContentColor 和 AmbientTextStyle 环境取代。您可以通过对环境属性使用
.current
来访问当前值,就像使用任何其他环境一样。此更改是为了保持一致性并避免有多种方法来完成相同的事情。此外,还重命名了一些环境属性,以更好地描述其用途,如下所示:ContentColorAmbient
->AmbientContentColor
TextStyleAmbient
->AmbientTextStyle
IndicationAmbient
->AmbientIndication
EmphasisAmbient
->AmbientEmphasisLevels
RippleThemeAmbient
->AmbientRippleTheme
(I37b6d)
版本 1.0.0-alpha04
2020 年 10 月 1 日
androidx.compose.animation:animation:1.0.0-alpha04
和 androidx.compose.animation:animation-core:1.0.0-alpha04
已发布。1.0.0-alpha04 版本包含以下提交。
API 变更
- 使用 @VisibleForTesting 注解了 rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled 和 textInputServiceFactory,使它们成为内部 API 并隐藏了它们的 kdoc (I554eb, b/168308412)
bug 修复
- 更新了许多 Graphics API
- 更新了缩放和旋转转换 API,使其在 DrawScope 和 DrawTransform 中使用单个 Offset 参数表示枢轴坐标,而不是使用独立的 x/y 坐标浮点参数
- 移除了 Rect.expandToInclude 和 Rect.join 方法
- 更新了 Radius 文档,在 elliptical 之外也提及 oval
- 添加了文档,指示 inline Radius 类的公共构造函数不应直接调用,而应通过其函数构造函数实例化 Radius 对象
- 移除了 RoundRect API,用于查询 topRight、bottomRight、bottomCenter 等
- 弃用了 Rect.shift,改用 Rect.translate
- 移除了 RoundRect.grow 和 Rect.shrink API
- 将 RoundRect.outerRect 重命名为 Rect.boundingRect
- 移除了 RoundRect.middleRect/tallMiddleRect/wideMiddleRect 和 Rect.isStadium 方法
- 将 RoundRect.longestSide 重命名为 RoundRect.maxDimension
- 将 RoundRect.shortestSide 重命名为 RoundRect.minDimension
- 将 RoundRect.center 更改为属性而不是函数
- 更新了 RoundRect 构造函数,使其消费 Radius 属性,而不是 x/y 半径值的单独参数
- 为 Radius 添加了解构 API
- 将各种 RoundRect 扩展函数迁移为属性
- (I8f5c7, b/168762961)
- foundation.Box 已弃用。请改用 foundation.layout.Box。 (Ie5950, b/167680279)
- Stack 已重命名为 Box。之前存在的 Box 将被弃用,转而使用 compose.foundation.layout 中的新 Box。新的 Box 的行为是在有多个子项时将子项堆叠在一起——这与之前的 Box 不同,之前的 Box 的行为类似于 Column。 (I94893, b/167680279)
- Box 装饰参数已弃用。如果您想在 Box 上添加装饰/填充,请改用 Modifier(Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- 盒子装饰参数已弃用。如果你想在盒子上添加装饰/内边距,请改用修饰符(Modifiers)(
Modifier.background
、Modifier.border
、Modifier.padding
) (Ibae92, b/167680279) - 我们阻止了布局作用域内容(例如
RowScope
中的alignWithSiblings
)的静态导入。请改用明确的作用域替代方案:with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
。 (I216be, b/166760797)
版本 1.0.0-alpha03
2020年9月16日
androidx.compose.animation:animation:1.0.0-alpha03
和 androidx.compose.animation:animation-core:1.0.0-alpha03
已发布。 版本 1.0.0-alpha03 包含以下提交。
bug 修复
- 布局 API 中
gravity
的用法已统一重命名为align
或alignment
。 (I2421a, b/164077038)
版本 1.0.0-alpha02
2020年9月2日
androidx.compose.animation:animation:1.0.0-alpha02
和 androidx.compose.animation:animation-core:1.0.0-alpha02
已发布。 版本 1.0.0-alpha02 包含以下提交。
API 变更
添加了
ManualFrameClock.hasAwaiters
以检查是否有任何内容正在等待该时钟的帧;在运行需要ManualFrameClock
的测试时,使用runWithManualClock
替代runBlocking
;以及TestUiDispatcher.Main
,它可在您的测试中轻松访问主 UI 调度程序。例如
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
bug 修复
onPreCommit
已弃用;onCommit
现在具有onPreCommit
的行为。onCommit
和onActive
现在在提交组合更改的同一协调器帧中运行,而不是在下一个协调器帧的开头运行。 (I70403)
版本 1.0.0-alpha01
2020年8月26日
androidx.compose.animation:animation:1.0.0-alpha01
和 androidx.compose.animation:animation-core:1.0.0-alpha01
已发布。 版本 1.0.0-alpha01 包含以下提交。
版本 0.1.0-dev
版本 0.1.0-dev17
2020年8月19日
androidx.compose.animation:animation:0.1.0-dev17
和 androidx.compose.animation:animation-core:0.1.0-dev17
已发布。 版本 0.1.0-dev17 包含以下提交。
新功能
API 变更
Offset
已成为内联类 (Iaec70)IntOffset
现在是一个内联类 (Iac0bf)IntSize
现在是一个内联类 (I2bf42)AnimatedVisibilty
可组合项可为子内容提供显示和隐藏动画效果。引入了
EnterTransition
和ExitTransition
,以便与AnimatedVisibilty
可组合项配合使用,提供 3 种不同类型的显示和隐藏动画:淡入、滑动以及内容的展开/收缩。可以组合不同类型的动画以实现更具定制化的外观和感觉。 (Idda11)弃用了
PxBounds
,转而使用Rect
。将PxBounds
的所有用法更新为rect
,并添加了适当的弃用/替换注解以帮助迁移。 (I37038, b/162627058)
bug 修复
PlacementScope.placeAbsolute()
已重命名为PlacementScope.place()
,而之前的PlacementScope.place()
已重命名为PlacementScope.placeRelative()
。因此,PlacementScope.place()
方法将不再在从右到左的上下文中自动镜像位置。如果需要此功能,请改用PlacementScope.placeRelative()
。 (I873ac, b/162916675)state { ... }
可组合项现已弃用,为清晰起见,请明确调用remember { mutableStateOf(...) }
。这减少了整体 API 表面和状态管理的概念数量,并与类属性委托的by mutableStateOf()
模式匹配。 (Ia5727)
版本 0.1.0-dev16
2020年8月5日
androidx.compose.animation:animation:0.1.0-dev16
和 androidx.compose.animation:animation-core:0.1.0-dev16
已发布。 版本 0.1.0-dev16 包含以下提交。
API 变更
- 内置的用于转换内置单位的向量转换器现在可以通过
Foo.VectorConverter
访问。例如Dp.VectorConverter
、Color.VectorConverter
、Float.VectorConverter
等 (I3e273) - 在
Modifier.animateContentSize()
中支持结束监听器,以便在尺寸更改动画完成时,监听器会收到通知,并包含动画的起始/结束尺寸。 (I277b2) - 新的
animateContentSize
修饰符,可为其子修饰符的布局尺寸变化添加动画效果 (Ieffdc) 添加了
MonotonicFrameAnimationClock
,它允许您将MonotonicFrameClock
用作AnimationClockObservable
,以弥合基于协程的新时钟与仍使用基于回调的旧时钟的 API 之间的差距。ManualAnimationClock
的MonotonicFrameClock
等价物现在是ManualFrameClock
。 (I111c7, b/161247083)
bug 修复
- 已更新对从右到左语言支持的 API。已添加
LayoutDirectionAmbient
,可用于读取和更改布局方向。已移除Modifier.rtl
和Modifier.ltr
。 (I080b3) transitionDefinition
要求显式指定类型 T。 (I1aded)foundation.shape.corner
包已扁平化到foundation.share
(I46491, b/161887429)Modifier.plus
已弃用,请改用Modifier.then
。'Then
' 具有更强的排序信号,同时禁止键入Modifier.padding().background() + anotherModifier
,这会中断链条并使其更难阅读 (Iedd58, b/161529964)Modifier.drawBackground
已重命名为Modifier.background
(I13677)
版本 0.1.0-dev15
2020年7月22日
androidx.compose.animation:animation:0.1.0-dev15
和 androidx.compose.animation:animation-core:0.1.0-dev15
已发布。 版本 0.1.0-dev15 包含以下提交。
依赖项更新
- 要使用 Compose 的
0.1.0-dev15
版本,您需要根据上方声明依赖项中显示的新代码片段来更新您的依赖项。
API 变更
Transition
API 已更改为返回TransitionState
,而不是将TransitionState
传递给子项。这使得 API 与animate()
API 更一致。 (I24e38)Crossfade
添加了Modifier
参数 (I87cfe, b/159706180)- 在顶级 API 中使用
AnimationSpec
而不是AnimationBuilder
,以阐明静态动画规范的概念- 通过移除创建
AnimationSpecs
(如tween
、spring
)的 lambda 要求来改进过渡 DSL。它们现在直接接受构造函数参数。 - 通过开放构造函数而不是依赖构建器,提高
AnimationSpec
的整体易用性 - 将
KeyFrames
和Tween
的持续时间和延迟更改为Int
。这消除了不必要的类型转换和方法重载(为了同时支持Long
和Int
)。 (Ica0b4)
- 通过移除创建
- 将
IntPx
的用法替换为Int
。将IntPxPosition
替换为IntOffset
。将IntPxSize
替换为IntSize
。 (Ib7b44) - 为了整合用于表示尺寸信息的类数量,将标准化为使用
Size
类而不是PxSize
。这提供了内联类的好处,可以利用long
类型打包 2 个浮点值来表示宽度和高度(以浮点数表示)。 (Ic0191) - 为了整合用于表示位置信息的类数量,将标准化为使用
Offset
类而不是PxPosition
。这提供了内联类的好处,可以利用long
类型打包 2 个浮点值来表示 x 和 y 偏移量(以浮点数表示)。 (I3ad98) - 在各种 Compose 类中,将
Px
类的用法替换为仅依赖Dp
和基本类型作为像素参数,这是大规模重构工作的一部分 (I086f4) - 为
Dp
、Px
、Size
、Position
、Bounds
、PxPosition
、PxSize
、PxBounds
、IntPx
、IntPxSize
、IntPxPosition
、IntPxBounds
和AnimationVector
添加了animate()
支持 (Ib7518) Crossfade
现在接受可选的AnimationBuilder
参数以允许配置动画 (I6d6e0)- API 中所有可为空的
Color
用法已替换为不可为空,并使用Color.Unset
而不是null
(Iabaa7) - 移除了
ValueHolder
类。重构了AnimatedValue
、AnimatedFloat
类,使动画值字段抽象化,以便子类可以观察值的更新。- 为
AnimatedValue
、AnimatedFloat
等添加了模型类。 - 添加了一组新的轻量级
@Composable
API,用于在值之间进行动画处理。 (I79530)
- 为
ambients
API 的重大更改。有关详细信息,请参阅日志和Ambient<T>
文档 (I4c7ee, b/143769776)- 新的重复模式:
Reverse
。此模式在RepeatableSpec
或VectorizedRepeatableSpec
中重复动画时会反转上一个迭代。 (Ibe0f5) - 对
ManualAnimationClock
的 API 增强:hasObservers: Boolean
和构造函数参数dispatchOnSubscribe: Boolean
(Iaa134) - 添加了在
AnimatedFloat
中获取最小/最大边界的 API (Icd9cc)
bug 修复
runOnIdleCompose
已重命名为runOnIdle
(I83607)- 一些测试 API 已重命名,以使其更直观。所有
findXYZ
API 已重命名为onNodeXYZ
。所有doXYZ
API 已重命名为performXYZ
。 (I7f164) - 引入了低级无状态动画 API。这些 API (I63bf7)
Recompose
可组合项不再是一个有用的抽象。大多数重组应该作为MutableState
赋值的结果而发生。除此之外,建议您使用invalidate
函数来触发当前作用域的重组。 (Ifc992)- 在各种 Compose 类中,将
Px
类的用法替换为仅依赖Dp
和基本类型作为像素参数,这是大规模重构工作的一部分。完全删除了Px
类 (I3ff33) - 在各种 Compose 类中,将
Px
类的用法替换为仅依赖Dp
和基本类型作为像素参数,这是大规模重构工作的一部分 (Id3434) Crossfade
现在可以将null
作为初始值使用 (Iad6a4, b/155947711)- 在各种 Compose 类中,将
Px
类的用法替换为仅依赖Dp
和基本类型作为像素参数,这是大规模重构工作的一部分 (I19d02) - 整合了
CanvasScope
实现,现在只剩下DrawScope
和ContentDrawScope
将CanvasScope
重命名为DrawScope
。更新了DrawScope
以实现Density
接口并提供LayoutDirection
删除了ContentDrawScope
中的DrawScope
子类。Painter
和PainterModifier
已更新,不再自行维护 RTL 属性,因为DrawScope
已自动提供此功能,无需手动提供 (I1798e) - 更新了公开
Canvas
的更高级别 Compose API,改为公开CanvasScope
。这消除了消费者维护自己的Paint
对象的需要。对于仍需要访问Canvas
的消费者,他们可以使用drawCanvas
扩展方法,该方法提供回调以使用底层Canvas
发出绘图命令。 (I80afd) - 分别为
Row
和Column
添加了verticalGravity
和horizontalGravity
参数。 (I7dc5a) ui-text
模块已重命名为ui-text-core
(I57dec)- 改进 DrawModifier API
- 将
draw()
的接收者作用域设为ContentDrawScope
- 移除了
draw()
上的所有参数 DrawScope
具有与前CanvasScope
相同的接口ContentDrawScope
具有drawContent()
方法 (Ibaced, b/152919067)
- 将
runOnIdleCompose
和runOnUiThread
现在是全局函数,而不是ComposeTestRule
上的方法。 (Icbe8f)- [Mutable]State 属性委托运算符已移至扩展函数,以支持 Kotlin 1.4 属性委托优化。调用者必须添加导入才能继续使用
by state { ... }
或by mutableStateOf(...)
。 (I5312c) ColoredRect
已弃用。请改用Box(Modifier.preferredSize(width, height).drawBackground(color))
。 (I499fa, b/152753731)- 将
Modifier
的加号运算符替换为工厂扩展函数 (I225e4) - 弃用了
Center
可组合项。应将其替换为LayoutSize.Fill + LayoutAlign.Center
修饰符,或替换为应用了适当修饰符的Box
或Stack
可组合项之一 (Idf5e0) - 将
LayoutFlexible
重命名为LayoutWeight
。将tight
参数重命名为fill
。 (If4738) Opacity
可组合函数已替换为drawOpacity
修饰符。 (I5fb62)- 使用
AndroidComposeTestRule
的测试现在在组合的根部提供一个动画时钟,允许手动暂停、恢复和推进。 (Id54c5) LayoutPadding
修饰符支持从右到左的方向 (I9e8da)Density
和DensityScope
已合并为一个接口。现在可以使用DensityAmbient.current
代替ambientDensity()
。可以使用with(density)
代替withDensity(density)
(I11cb1)- 为各种内联类类型添加了
copy
方法,包括Offset
Size
Radius
Motion
TransformOrigin
- 弃用了
Size.copy
伴生对象方法,转而使用实例copy
方法 (Ife290, b/159905651)
androidx.compose.ViewComposer
已移至androidx.ui.node.UiComposer
。androidx.compose.Emittable
已移除。它与ComponentNode
重复。androidx.compose.ViewAdapters
已移除。它们不再是受支持的用例。Compose.composeInto
已弃用。请改用setContent
或setViewContent
。Compose.disposeComposition
已弃用。请改用setContent
返回的Composition
上的dispose
方法。androidx.compose.Compose.subcomposeInto
已移至androidx.ui.core.subcomposeInto
。ComponentNode#emitInsertAt
已重命名为ComponentNode#insertAt
。ComponentNode#emitRemoveAt
已重命名为ComponentNode#removeAt
。ComponentNode#emitMode
已重命名为ComponentNode#move
(Idef00)