Compose Animation
androidx.compose.animation
androidx.compose.animation.core
androidx.compose.animation.graphics
(如需查看所有 Compose 软件包文档,请参阅 API 参考文档)
最近更新时间 | 稳定版 | 候选版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 8 月 7 日 | 1.6.8 | - | 1.7.0-beta07 | - |
结构
Compose 由 androidx
中的 7 个 Maven 组 ID 构成。每个组都包含一套特定用途的功能,并各有专属的版本说明。
下表介绍了各个组及指向其版本说明的链接。
组 | 说明 |
---|---|
compose.animation | 在 Jetpack Compose 应用中构建动画,丰富用户体验。 |
compose.compiler | 借助 Kotlin 编译器插件,转换 @Composable functions(可组合函数)并启用优化功能。 |
compose.foundation | 使用现成可用的构建块编写 Jetpack Compose 应用,还可扩展 Foundation 以构建您自己的设计系统元素。 |
compose.material | 使用现成可用的 Material Design 组件构建 Jetpack Compose UI。这是更高层级的 Compose 入口点,旨在提供与 www.material.io 上描述的组件一致的组件。 |
compose.material3 | 使用 Material Design 3(新一代 Material Design)组件构建 Jetpack Compose UI。Material 3 中包括了更新后的主题和组件,以及动态配色等 Material You 个性化功能,旨在与新的 Android 12 视觉风格和系统界面相得益彰。 |
compose.runtime | Compose 编程模型和状态管理的基本构建块,以及 Compose 编译器插件的目标核心运行时。 |
compose.ui | 与设备互动所需的 Compose UI 的基本组件,包括布局、绘图和输入。 |
声明依赖项
如需添加 Compose 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项:
Groovy
dependencies { implementation "androidx.compose.animation:animation:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.animation:animation:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
如需详细了解依赖项,请参阅添加 build 依赖项。
反馈
您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。
如需了解详情,请参阅问题跟踪器文档。
版本 1.7
版本 1.7.0-beta07
2024 年 8 月 7 日
发布了 androidx.compose.animation:animation-*:1.7.0-beta07
。版本 1.7.0-beta07 包含这些提交内容。
bug 修复
- 修复了
SharedTransitionScope
在特定条件下在过渡期间不绘制叠加层项的问题,通常包括与 Navigation 结合使用的情况。(Id65ab、b/347520198)
版本 1.7.0-beta06
2024 年 7 月 24 日
发布了 androidx.compose.animation:animation-*:1.7.0-beta06
。版本 1.7.0-beta06 包含这些提交内容。
bug 修复
- 通过在处理转场时正确清除
SnapshotStateObserver
中的观察结果,修复了SeekableTransition
泄漏过渡状态的问题。(b9c7182) - 修复了当父 Transition 完成后,系统未正确将子 Transition 标记为“已完成”的极端情况。(dc42216)
版本 1.7.0-beta05
2024 年 7 月 10 日
发布了 androidx.compose.animation:animation-*:1.7.0-beta05
。版本 1.7.0-beta05 包含这些提交内容。
bug 修复
- 现在可以在
snapshotFlow
中正确读取过渡属性totalDurationNanos
。
版本 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
现在是一个接口,而不是类。(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) - 现在,您可以向
keyframesWithSpline
传递一个periodicBias
值(浮点数),这样可以使样条线的初始速度和最终速度相等。对于使用样条线的可重复动画很有用。偏差表示为实现周期性对每个速度(初始速度和最终速度)的修改程度。(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
,因为它们需要前向操作。当先行配置默认处于启用状态或在将来的版本中选择启用时,即提供此类预测。
版本 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
中添加了对清除渐变的渲染程序支持。(I4d5bb) - 为
PageSize.Fixed
实现等于和哈希代码。(Ie3ede、b/300134276) - 修复了与窗口边衬区更改相关的二进制文件兼容性问题。(Iee695)
- 移除了 Material3 芯片/按钮的 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 现在具有主要变体和次要变体。这些属性会正确映射到 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
可组合函数和接口现已稳定。(Ifb2ce)
版本 1.6.0-alpha02
2023 年 7 月 26 日
发布了 androidx.compose.animation:animation-*:1.6.0-alpha02
。版本 1.6.0-alpha02 中包含这些提交内容。
API 变更
- 新增了
ExitTransition.Hold
,用于在AnimatedContent
中显示外发内容,直到同时输入和退出过渡完成时。(I5984f) - 添加了额外的注解,用于指定可组合项允许的输入 (I51109)
版本 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 变更
AnimatedContent
现在支持ContentKey
,以便更好地控制何时进行转换。(Ic069b)
版本 1.5.0-alpha03
2023 年 4 月 19 日
发布了 androidx.compose.animation:animation-*:1.5.0-alpha03
。版本 1.5.0-alpha03 中包含这些提交内容。
新功能
LookaheadScope
中的SubcomposeLayout
新增了默认行为。它让不含条件槽的SubcomposeLayouts
(例如TabRow
、Scaffold
、BoxWithConstraints
等)能够很好地与前向动画配合使用。
API 变更
- 新的默认
intermediateMeasurePolicy
会重复使用来自先行传递的衡量政策,默认情况下,允许没有条件槽的SubcomposeLayout
子类型(例如Scaffold
、TabRow
和BoxWithConstraints
)使用先行数据。(Id84c8) - 将 infix 趣味性重命名为
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 以来的重要变更
- 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 中包含这些提交内容。
新功能
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 规则的界面测试中,在所有帧回调运行完毕后,系统才会分派在
withFrameNanos
回调期间恢复的连续作业。这与在正常运行时 Compose 的行为一致。不过,依赖旧行为的测试可能会失败。这应该只会影响直接调用withFrameNanos
或withFrameMillis
的代码,并会将回调之外的逻辑传递给可能需要在回调内部移动的那些函数。请参阅此 CL 中的示例了解动画测试变更。 - 向
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
,以允许工具更改可组合项的内部状态 (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 Animation 支持开发者选项中的“Animator 时长缩放”设置了。
- 一系列新的实验性加/减速曲线。
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 修复
- 移除了加/减速函数的
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 修复
- 更新了矢量图形 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 Animation 支持开发者选项中的“Animator 时长缩放”设置了。(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 无障碍功能指南对触摸目标尺寸的要求。例如,按钮触摸目标将扩展为至少 48x48dp 的尺寸,即使您将按钮尺寸设为更小也是如此。这会使 Compose Material 与 Material Design 组件的行为保持一致,以便在混合使用 View 和 Compose 时提供一致的行为。此变更还可确保在您使用 Compose Material 组件创建界面时,能够满足触摸目标无障碍功能的最低要求。
- 对导航栏提供稳定支持
- 将之前的一些实验性 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 修复
- 新增了用于支持工具的 Animation API。具体而言,工具可以使用这些 API 检查 Transition 中的动画及其配置。(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 变更
- 新增了用于支持工具的 Animation API。具体而言,工具可以使用这些 API 检查 Transition 中的动画及其配置。(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 变更
- repeatable 和 infiniteRepeatable 现在支持 StartOffset,作为在动画开始前延迟开始时间或快进动画的方式。该起始偏移量不会重复(Ic679f、b/195079908)
- 新增了按比例进入/退出过渡。它可与其他类型的 Enter/ExitTransition 结合使用。(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)"
如需修复此崩溃问题,请暂时将
build.gradle
文件中的 minSdkVersion 提高到 24 及以上。此问题将在下一个版本的 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
可组合项。在进入新目标内容并退出初始内容的过渡过程中,该可组合项使用可自定义的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
中指定的。该文件会每行指定一个规则,在此情况下,规则是指用于与库中的方法或类匹配的格式。这些规则的语法是使用adb shell profman --dump-classes-and-methods ...
时所用的便于用户看懂的 ART 配置文件格式的超集。这些规则采用两种形式,一种用于方法,一种用于类。方法规则采用以下格式:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
类规则采用以下格式:
<CLASS_DESCRIPTOR>
其中,
<FLAGS>
是H
、S
和P
中的一个或多个字符,用于指示相应方法应标记为“Hot”“Startup”还是“Post Startup”。<CLASS_DESCRIPTOR>
是目标方法所属类的描述符。例如,类androidx.compose.runtime.SlotTable
的描述符为Landroidx/compose/runtime/SlotTable;
。<METHOD_SIGNATURE>
是方法的签名,其中包含方法的名称、参数类型和返回值类型。例如,LayoutNode
中的fun isPlaced(): Boolean
方法具有签名isPlaced()Z
。这些格式可以包含通配符(
**
、*
和?
),以便让单个规则能够涵盖多个方法或类。
规则的作用是什么?
如果某个方法具有
H
标志,则表示该方法为“hot”方法,应提前进行编译。如果某个方法具有
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 中自定义退出/进入过渡动画
- 新增了 animateEnterExit 修饰符,可供 AnimatedVisibility 的所有子级访问
- 废弃了采用
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
- 接口负责发出/收集 Interaction 事件。
- 应使用
interactionSource = remember { MutableInteractionSource() }
,而不是将interactionState = remember { InteractionState() }
传递给Button
和Modifier.clickable()
等组件。 - 应改用 InteractionSource 的扩展函数,比如 InteractionSource.collectIsPressedAsState(),而不是使用
Interaction.Pressed in interactionState
。 - 对于复杂用例,您可以使用 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 软件包。VelocirtTracker 已从 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 现在是挂起函数 (If4288)
- 现在提倡
remember { mutableStateOf(0) }
这样的用法,我们将移除savedInstanceState { 0 }
可组合项,与之前移除state { 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 package。内部方法 RestorableStateProvider 已重命名为 SaveableStateProvider。已移除通用类型,因此您可以直接将 Any 作为键传递。不再需要实验性注解。(I0902e、b/174598702)
- 更新了 Modifier.animateContentSize API,以便与动画系统的其余部分保持一致。(I0bf75、b/177457083)
- 现已废弃 AnimatedValue/Float,请改用 Animatable。(I71345、b/177457083)
- 废弃了 tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 和 pressIndicationGestureFilter。改为将 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 和子动画添加了一个标签字段 (I619fb)
- animateAsState 现为 animateFooAsState,其中 Foo 是添加动画效果的变量的类型。例如 Float、Dp、Offset 等 (Ie7e25)
- 新增可运行任意数量子动画的 InfiniteTransition。(I1da81)
- 更改了 Material 有状态参数接口,以使用返回
State<T>
的 @Composable 函数。添加了 Animatable.asState(),以便更轻松地将 Animatable 转换为 State。还更改了 animateElevation,使其成为 Animatable 上的挂起扩展函数。(If613c)
bug 修复
- 废弃了 onCommit、onDispose 和 onActive,取而代之的是 SideEffect API 和 DisposableEffect API (If760e)
- 现在支持 updateTransition 中的初始 State (Ifd51d)
- 向 Image 和 Icon 添加了内容说明参数,用于提供对无障碍服务的说明 (I2ac4c)
- 现已废弃了 invalidate 和 compositionReference(),取而代之的分别是 currentRecomposeScope 和 rememberCompositionReference。(I583a8)
- Duration 和 Uptime 将替换为 Long 毫秒值,此步骤消除了指针输入对这些类的依赖。(Ia33b2、b/175142755、b/177420019)
- 现在可以在组合之外创建可点击项、可切换项和可选择项(I0a130、b/172938345、b/175294473)
- 加/减速选项已更改为功能接口 (Ib14e5)
- 为 LazyColumn/LazyRow/LazyVerticalGrid 的作用域新增了
items(count: Int)
工厂方法。items(items: List)
和itemsIndexed(items: List)
现在是扩展函数,因此您必须在使用时将其手动导入。为 Array 新增了扩展函数重载: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 修复
- 新增了基于协程的 API
Animatable
,用于确保其动画间的互斥性。新增了 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,并废弃了旧的 VectorConveter (If0c4b)
- 引入了一组全新的 Transition API,这些 API 可提升易用性并支持动态添加的动画和动态计算的动画目标。为了方便与基于 TransitionDefinition 的 API 区分开来,我们将这一组 API 标记为实验性。(Ia7fe3)
bug 修复
- 现在,offset 修饰符中的 lambda 会返回 IntOffset(而非 Float)。(Ic9ee5、b/174137212、b/174146755)
- 废弃了 LazyColumnFor、LazyRowFor、LazyColumnForIndexed 和 LazyRowForIndexed,改为使用 LazyColumn 和 LazyRow (I5b48c)
- 针对挂起指针输入 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 检查结果和指南,还将一些尾随 lambda 名为
children
的 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 的便捷 API。
- 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
的 Ambient 属性,将它们替换成了以 Ambient 为前缀的新属性(以与其他 Ambient 属性保持一致并遵循 Compose API 准则)。(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 Ambient 替换。与其他任何 Ambient 一样,您可以通过在 Ambient 属性中使用
.current
来访问当前值。进行此项变更是为了确保一致性,并避免可以通过多种方式来实现同一目的。此外,还重命名了一些 Ambient 属性,以更准确地描述它们的用途,如下所示:- 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 变为内部 API 并隐藏其 KDoc(I554eb、b/168308412)
bug 修复
- 更新了多个图形 API
- 更新了缩放和旋转的转换 API,现在使用单个 Offset 参数来表示数据透视坐标,不再对 DrawScope 和 DrawTransform 中的 x/y 坐标使用单独的浮点数参数
- 移除了 Rect.expandToInclude 和 Rect.join 方法
- 更新了 Radius 文档,除了介绍 elliptical(椭圆形)之外,还介绍了 oval(卵形)
- 添加了相关文档,指明不能直接调用内联 Radius 类的公共构造函数,而应通过对应的函数构造函数对 Radius 对象进行实例化
- 移除了用于查询 topRight、bottomRight、bottomCenter 等的 RoundRect API
- 废弃了 Rect.shift,取而代之的是 Rect.translate
- 移除了 RoundRect.grow API 和 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 半径值的单独参数
- 移除了假定对象是原点为 0,0 的 Rectangle 的 Size API
- 在 Radius 中添加了一个销毁 API
- 已改为将各种 RoundRect 扩展函数迁移为属性
- (I8f5c7、b/168762961)
- 废弃了 foundation.Box。请改用 foundation.layout.Box。(Ie5950、b/167680279)
- Stack 已重命名为 Box。将废弃之前存在的 Box,改为使用 compose.foundation.layout 中的新 Box。新的 Box 会在存在多个子元素时,在堆栈中将一个子元素放在另一个子元素之上,其行为不同于旧版 Box,后者的行为类似于 Column。(I94893、b/167680279)
- 废弃了 Box 装饰参数。如果您想对框进行装饰/填充,请改为使用 Modifier(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 修复
- gravity 在布局 API 中用到时被一致地重命名为 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
可让您轻松访问测试中的主界面调度程序。例如:
@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 在已提交的组成部分变更的同一 Choreographer 帧中运行,而不是在下一个 Choreographer 帧开始处运行。(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 Surface 及概念数量,且与类属性委托的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)
- 为淡入淡出添加了修饰符参数(I87cfe、b/159706180)
- 在顶级 API 中使用 AnimationSpec 而非 AnimationBuilder 来阐明静态动画规范的概念
- 改进了过渡 DSL:在创建补间动画、弹性动画等 AnimationSpec 时无需再指定 lambda 要求,而是直接接受构造函数参数。
- 提高了 AnimationSpec 的整体易用性:开放构造函数,而不是依赖于构建器
- 将关键帧和补间动画的时长和延迟时间改为了 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)
- 淡入淡出现在接受可选的 AnimationBuilder 参数,以允许配置动画 (I6d6e0)
- 将 API 中使用的所有可为 null 的 Color 替换为非 null 值,并使用 Color.Unset 代替 null (Iabaa7)
- 移除了 ValueHolder 类。重构了 AnimatedValue 和 AnimatedFloat 类,使动画值字段抽象化,以便子类可以发现值更新。
- 为 AnimatedValue、AnimatedFloat 等添加了模型类。
- 添加了一组新的轻量级 @Composable API,用于在值之间添加动画。(I79530)
- Ambient API 重大更改。如需了解详情,请参阅日志和
Ambient<T>
文档(I4c7ee、b/143769776) - 新的重复模式:Reverse。当动画在 RepeatableSpec 或 VectorizedRepeatableSpec 中重复时,此模式会返回上一次迭代。(Ibe0f5)
- ManualAnimationClock 增加了 API 内容:
hasObservers: Boolean
和构造函数参数dispatchOnSubscribe: Boolean
(Iaa134) - 添加了 API 以在 AnimatedFloat 中获取最小/最大边界 (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)
- 淡入淡出现在可以将 null 用作初始值(Iad6a4、b/155947711)
- 我们进行了大规模的重构工作,其中包括替换了各种 Compose 类中对 Px 类的使用,从而仅依赖于 Dp 和基元类型来处理像素参数 (I19d02)
- 整合了 CanvasScope 实现,因此现在只有 DrawScope 和 ContentDrawScope。CanvasScope 已重命名为 DrawScope。更新了 DrawScope 以实现密度界面并提供 LayoutDirection。删除了 ContentDrawScope 中的 DrawScope 子类。Painter 和 PainterModifier 已更新,不再由自身保留 RTL 属性,因为 DrawScope 已提供此信息,无需手动提供 (I1798e)
- 更新了公开画布的更高级别的 Compose API,改为公开 CanvasScope。这样一来,用户便无需再维护自己的渲染对象。对于仍需要访问画布的使用方,可以使用 drawCanvas 扩展程序方法,该方法提供回调以向底层画布发出绘制命令。(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 属性委托优化。调用方必须添加 import 才能继续使用
by state { ... }
或by mutableStateOf(...)
。(I5312c) - 废弃了 ColoredRect,请改用
Box(Modifier.preferredSize(width, height).drawBackground(color))
。(I499fa、b/152753731) - 将修饰符以及运算符替换成了出厂扩展函数 (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)
- 为各种内联类类型添加了复制方法,包括:
- Offset
- Size
- Radius
- Motion
- TransformOrigin
- 废弃了 Size.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)