Compose 动画

在他们的 Jetpack Compose 应用中构建动画,以丰富用户体验。
最新更新 稳定版 候选版 Beta 版 Alpha 版
2024 年 9 月 4 日 1.7.0 - - 1.8.0-alpha01

结构

Compose 是 androidx 中 7 个 Maven 组 ID 的组合。每个组包含一组目标功能子集,每个子集都有自己的一组发行说明。

此表解释了这些组并链接到每一组发行说明。

描述
compose.animation在他们的 Jetpack Compose 应用中构建动画,以丰富用户体验。
compose.compiler转换 @Composable 函数并使用 Kotlin 编译器插件启用优化。
compose.foundation使用现成的构建块编写 Jetpack Compose 应用,并扩展基础来构建您自己的设计系统组件。
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 视觉风格和系统 UI 保持一致。
compose.runtimeCompose 编程模型和状态管理的基本构建块,以及 Compose 编译器插件的目标核心运行时。
compose.ui与设备交互所需的 Compose UI 的基本组件,包括布局、绘图和输入。

声明依赖项

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

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

Groovy

dependencies {
    implementation "androidx.compose.animation:animation:1.7.0"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.animation:animation:1.7.0")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

反馈

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

创建新问题

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

版本 1.8

版本 1.8.0-alpha01

2024 年 9 月 4 日

androidx.compose.animation:animation-*:1.8.0-alpha01 已发布。版本 1.8.0-alpha01 包含这些提交

新功能

  • 新增 Modifier.animateBounds API,用于在预读作用域内为大小和位置变化添加动画。 94b9394

API 变更

  • 移除带有弧线和样条曲线的关键帧上的实验性标记 (89e1199)

错误修复

  • 当未找到匹配项时跳过 placeHolderSize 逻辑 (77c0160)
  • AndroidFlingSpline 中限制播放时间,以防止由于播放时间非单调递增导致的崩溃(9d47587)

外部贡献

  • 由 Steven Schoen 贡献,防止在没有正在运行的过渡时设置可搜索过渡的 playTime。 (c2e6e7e6)
  • 修复由 Steven Schoen 贡献,在某些情况下 SharedTransitionScope 未绘制项目的问题 (b41077b6)

版本 1.7

版本 1.7.0

2024 年 9 月 4 日

androidx.compose.animation:animation-*:1.7.0 已发布。

自 1.6.0 以来重要更改

版本 1.7.0 中的重要更改已在 这篇博文中介绍。

新的共享元素过渡 API

  • 新的共享元素过渡 API 等待您的使用和反馈。这些新的实验性 API 允许使用提供的修饰符将布局标记为跨布局树共享,在其中一组共享内容退出而另一组内容进入时,生成平滑变化的边界。 (Icb0b9)
  • 新增 scaleInSharedContentToBoundsscaleOutSharedContentToBounds 用于在 sharedBounds 中缩放内容 (I731c1)
  • 实验性的 SharedTransitionScope 现在是接口而不是类。 (Iaf856)
  • 新增 resizeModesScaleToBoundsRemeasureToBounds)用于 sharedBounds,以在缩放和重新测量之间进行选择。之前的 scaleIn/OutSharedContentToBounds API 现已弃用。 (I0d41a)

现有 API 的改进

  • 新增 Modifier.animateContentSize,它接受一个用于自定义内容对齐的额外参数。 (I5623ab/269803907)
  • 新增实验性 DeferredTargetAnimation,用于为在实例化期间未知的大小、位置或任何其他目标添加动画。 (I60745)
  • SeekableTransitionStateseekTo() 替换了 snapTo(),并添加了一个 snapTo(),它会立即将状态更改为目标状态,而无需任何动画。
  • 您现在可以将 periodicBias 值(浮点数)传递给 keyframesWithSpline,这将使样条曲线的初始和最终速度相等。对于使用样条曲线的可重复动画很有用。偏差表示每个速度(初始和最终)为实现周期性而修改的程度。 (Ic1e6cb/292114811)

以下 API 已变得稳定或已被移除

  • AnimatedVisibilityScope.transition 现在是稳定的 API。 Modifier.animateEnterExit(..) 也已稳定。 (I6c1d1)
  • ApproachLayoutModifierNodeModifier.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 包含 这些提交

错误修复

  • 修复了在某些情况下 SharedTransitionScope 未绘制叠加层项目的问题,这些情况通常包括与导航一起使用。 (Id65abb/347520198)

版本 1.7.0-beta06

2024 年 7 月 24 日

androidx.compose.animation:animation-*:1.7.0-beta06 已发布。版本 1.7.0-beta06 包含 这些提交

错误修复

  • 修复了 SeekableTransition 泄漏过渡状态的问题,通过在过渡被释放时正确清理 SnapshotStateObserver 中的观察结果。 (b9c7182)
  • 修复了在父级完成时子级过渡未正确标记为已完成的极端情况。 (dc42216)

版本 1.7.0-beta05

2024 年 7 月 10 日

androidx.compose.animation:animation-*:1.7.0-beta05 已发布。版本 1.7.0-beta05 包含 这些提交

错误修复

  • 过渡属性 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 变更

  • 新增 resizeModesScaleToBoundsRemeasureToBounds)用于 sharedBounds,以在缩放和重新测量之间进行选择。之前的 scaleIn/OutSharedContentToBounds API 现已弃用。 (I0d41a)

外部贡献

版本 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)
  • 新增 scaleInSharedContentToBoundsscaleOutSharedContentToBounds 用于在 sharedBounds 中缩放内容 (I731c1)

API 变更

  • AnimatedVisibilityScope.transition 现在是稳定的 API。 Modifier.animateEnterExit(..) 也已稳定。 (I6c1d1)
  • ApproachLayoutModifierNodeModifier.approachLayout 现在是稳定的,并使用新的 isMeasurementApproachInProgress()isPlacementApproachInProgress() 分别替换了旧的 isMeasurementApproachComplete()isPlacementApproachComplete()
  • 移除已弃用的 intermediateLayout 修饰符。 (I3e91c)
  • 您现在可以将 periodicBias 值(浮点数)传递给 keyframesWithSpline,这将使样条曲线的初始和最终速度相等。对于使用样条曲线的可重复动画很有用。偏差表示每个速度(初始和最终)为实现周期性而修改的程度。 (Ic1e6cb/292114811)

错误修复

  • 修复了之前会限制在 0..1 的过度和不足缓动曲线 (I38747)

版本 1.7.0-alpha06

2024 年 4 月 3 日

androidx.compose.animation:animation-*:1.7.0-alpha06 已发布。版本 1.7.0-alpha06 包含 这些提交

新功能

  • LazyColumnLazyRow 中添加了项目出现和消失动画支持。之前可以通过添加 Modifier.animateItemPlacement() 修饰符来支持放置(重新排序)动画。我们弃用了此修饰符并引入了一个新的非实验性修饰符,称为 Modifier.animateItem(),它允许您支持所有三种动画类型:出现(淡入)、消失(淡出)和重新排序。 (I2d7f7b/330152398b/150812265)

错误修复

  • 改进了 updateTransition API 的性能。

版本 1.7.0-alpha05

2024 年 3 月 20 日

androidx.compose.animation:animation-*:1.7.0-alpha05 已发布。版本 1.7.0-alpha05 包含 这些提交

API 变更

  • SeekableTransitionStateseekTo() 替换了 snapTo(),并添加了一个 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,它接受一个用于自定义内容对齐的额外参数。 (I5623ab/269803907)
  • 新增实验性 DeferredTargetAnimation,用于为在实例化期间未知的大小、位置或任何其他目标添加动画。 (I60745)

版本 1.7.0-alpha02

2024 年 2 月 7 日

androidx.compose.animation:animation-*:1.7.0-alpha02 已发布。 版本 1.7.0-alpha02 包含这些提交。

错误修复

  • 修复了 KeyframesSpec 的兼容性问题。 (I2bdf3b/322214617)
  • 修复了在 LazyList 中使用时 Modifier.animateContentSize 未正确重置的问题。 (I070512b/322525716)
  • 修复了在使用超出范围的时间戳时 KeyframesSpec 上出现的 IllegalStateException。 (I341b8b/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 版本包含以下提交。

错误修复

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 中删除 scaleInToFitContainerscaleOutToFitContainer,因为它们需要前瞻性。它们将在将来版本中默认启用或选择启用前瞻性时可用。

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 维值。它对于插值位置值(如 OffsetIntOffsetDpOffset)特别有用。已添加为实验性 API。

错误修复

  • ArcLine 中添加了对扫描渐变的渲染器支持。(I4d5bb
  • PageSize.Fixed 实现 equals 和 hashcode。(Ie3edeb/300134276
  • 修复与窗口插入更改相关的二进制兼容性问题。(Iee695
  • 删除 Material3 芯片/按钮的材料核心层,因为微基准测试表明没有它性能更好。(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 变更

  • 固定和可滚动的选项卡栏现在具有主和次要变体。这些正确地映射到 Material3 中定义的颜色和指示器行为。
  • PrimaryScrollableTabRowSecondaryScrollableTabRow 现在公开了滚动状态。(Iec8f5b/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.animateContentSizeAnimatedVisibility 以完全集成到前瞻系统中,方法是在前瞻传递中报告目标大小。

API 变更

  • IntrinsincMeasureScope 及其实现(例如 MeasureScope)中添加了一个新属性,以指示当前测量传递是否为前瞻传递。(I7a812

错误修复

  • 从弹簧动画中删除了分配。(Ie9431
  • Enum.valueOf 的值参数名称已更改。(Ia9b89
  • 枚举 valueOf 中抛出的异常更多。(I818fe

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 版本包含以下提交。

错误修复

  • 修复了文本字段在 readOnly 为 true 时显示键盘并可编辑的问题。还修复了在获得焦点时将 readOnly 从 true 更改为 false 时键盘不显示的问题。(I34a19b/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 版本包含以下提交。

错误修复

  • 修复了一个问题,即在基本状态类型(如 MutableIntState)上调用 .value 会报告带有无效修复的 lint 警告。现在,检查将建议迁移到正确的属性。(Iba953b/287279257

  • 提供了一个可选的检查,建议将 mutableStateOf() 调用迁移到其对应的原始数据类型专用类型。其 lint ID 为 AutoboxingStateCreation。以前,此检查默认情况下对所有项目都启用。要在 Android Studio 的编辑器和项目的 lint 输出中查看此警告,请将其严重性从信息性更改为警告(或更高),方法是在模块的 build.gradlebuild.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)

错误修复

  • 从弹簧动画中删除了内存分配 (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 包含这些提交。

新功能

  • LookaheadScopeSubcomposeLayout 的新默认行为。它允许没有条件插槽的 SubcomposeLayouts(例如 TabRowScaffoldBoxWithConstraints 等)与前瞻动画很好地配合使用。

API 变更

  • 新的默认 intermediateMeasurePolicy 重用来自前瞻传递的测量策略,允许没有条件插槽的 SubcomposeLayout 子类型(如 ScaffoldTabRowBoxWithConstraints)默认情况下与前瞻配合使用。(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 包含这些提交。

新功能

  • 支持在 SubcomposeLayout 中使用前瞻的新实验性 API。这将允许 SubcomposeLayoutLookaheadScope 中正常工作。很快将提供对特定 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 已重命名为 AnimatedContentTransitionScopescaleInscaleOut 现在是稳定的 API。(Iaf54e)

版本 1.4

版本 1.4.3

2023 年 5 月 3 日

androidx.compose.animation:animation:1.4.3androidx.compose.animation:animation-core:1.4.3androidx.compose.animation:animation-graphics:1.4.3 已发布,无任何更改(仅版本号更新)。

版本 1.4.2

2023 年 4 月 19 日

androidx.compose.animation:animation:1.4.2androidx.compose.animation:animation-core:1.4.2androidx.compose.animation:animation-graphics:1.4.2 已发布,无任何更改。 版本 1.4.2 包含这些提交。

版本 1.4.1

2023 年 4 月 5 日

androidx.compose.animation:animation:1.4.1androidx.compose.animation:animation-core:1.4.1androidx.compose.animation:animation-graphics:1.4.1 已发布,无任何更改。 版本 1.4.1 包含这些提交。

版本 1.4.0

2023 年 3 月 22 日

androidx.compose.animation:animation:1.4.0androidx.compose.animation:animation-core:1.4.0androidx.compose.animation:animation-graphics:1.4.0 已发布。 版本 1.4.0 包含这些提交。

自 1.3.0 以来重要更改

  • 工具标签在 rememberInfiniteTransitionInfiniteTransition 和 Transition 上的所有扩展函数(例如 InfiniteTransition#animateColor)中受支持 (I56ef7)

版本 1.4.0-rc01

2023 年 3 月 8 日

androidx.compose.animation:animation:1.4.0-rc01androidx.compose.animation:animation-core:1.4.0-rc01androidx.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-beta02androidx.compose.animation:animation-core:1.4.0-beta02androidx.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-beta01androidx.compose.animation:animation-core:1.4.0-beta01androidx.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-alpha05androidx.compose.animation:animation-core:1.4.0-alpha05androidx.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-alpha04androidx.compose.animation:animation-core:1.4.0-alpha04androidx.compose.animation:animation-graphics:1.4.0-alpha04 已发布。 版本 1.4.0-alpha04 包含这些提交。

新功能

  • 工具标签在 rememberInfiniteTransitionInfiniteTransitionTransition 上的所有扩展函数(例如 InfiniteTransition#animateColor)中受支持 (I56ef7)

API 变更

  • InfiniteTransition#TransitionAnimationStateInfiniteTransition#animations API 现在是公开的。(I36682)

版本 1.4.0-alpha03

2022 年 12 月 7 日

androidx.compose.animation:animation:1.4.0-alpha03androidx.compose.animation:animation-core:1.4.0-alpha03androidx.compose.animation:animation-graphics:1.4.0-alpha03 已发布。 版本 1.4.0-alpha03 包含这些提交。

API 变更

  • 在使用 Compose 规则的 UI 测试中,在 withFrameNanos 回调期间恢复的延续将不会在所有帧回调都完成运行后才分派。这与 compose 在正常运行时的行为相匹配。但是,依赖于旧行为的测试可能会失败。这只会影响直接调用 withFrameNanoswithFrameMillis 的代码,并且在传递给这些函数的回调之外具有逻辑的代码可能需要移动到回调内部。请参阅 此 CL 中的动画测试更改以获取示例
  • TestMonotonicFrameClock 构造函数和工厂函数添加了可选的 onPerformTraversals: (Long) -> Unit 参数,以便在 withFrameNanos 回调之后但在恢复调用者的协程之前运行代码。(Idb413b/254115946b/222093277b/255802670)
  • AnimatedContent 中用于工具标签的新参数 (Iebe2d)

版本 1.4.0-alpha02

2022 年 11 月 9 日

androidx.compose.animation:animation:1.4.0-alpha02androidx.compose.animation:animation-core:1.4.0-alpha02androidx.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-alpha01androidx.compose.animation:animation-core:1.4.0-alpha01androidx.compose.animation:animation-graphics:1.4.0-alpha01 已发布。 版本 1.4.0-alpha01 包含这些提交。

错误修复

  • 修复了 AnimatedContent 中不正确的中断动画 (b/238662479)

版本 1.3

版本 1.3.3

2023 年 1 月 11 日

androidx.compose.animation:animation:1.3.3androidx.compose.animation:animation-core:1.3.3androidx.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.2androidx.compose.animation:animation-core:1.3.2androidx.compose.animation:animation-graphics:1.3.2已发布。版本 1.3.2 包含这些提交。

错误修复

  • 更新以支持 androidx.compose.ui 1.3.2

版本 1.3.1

2022 年 11 月 9 日

androidx.compose.animation:animation:1.3.1androidx.compose.animation:animation-core:1.3.1androidx.compose.animation:animation-graphics:1.3.1已发布。版本 1.3.1 包含这些提交。

版本 1.3.0

2022 年 10 月 24 日

androidx.compose.animation:animation:1.3.0androidx.compose.animation:animation-core:1.3.0androidx.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-rc01androidx.compose.animation:animation-core:1.3.0-rc01androidx.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-beta03androidx.compose.animation:animation-core:1.3.0-beta03androidx.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-beta02androidx.compose.animation:animation-core:1.3.0-beta02androidx.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-beta01androidx.compose.animation:animation-core:1.3.0-beta01androidx.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-alpha03androidx.compose.animation:animation-core:1.3.0-alpha03androidx.compose.animation:animation-graphics:1.3.0-alpha03已发布。版本 1.3.0-alpha03 包含这些提交。

API 变更

  • CrossfadeanimateAsStateAnimatable中添加了用于工具标签的新参数(Iac08a
  • 添加了atFraction函数,用于根据分数而不是特定持续时间定义关键帧。(I20c76b/232059455

版本 1.3.0-alpha02

2022 年 7 月 27 日

androidx.compose.animation:animation:1.3.0-alpha02androidx.compose.animation:animation-core:1.3.0-alpha02androidx.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-alpha01androidx.compose.animation:animation-core:1.3.0-alpha01androidx.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.1androidx.compose.animation:animation-core:1.2.1androidx.compose.animation:animation-graphics:1.2.1已发布。版本 1.2.1 包含这些提交。

版本 1.2.0

2022 年 7 月 27 日

androidx.compose.animation:animation:1.2.0androidx.compose.animation:animation-core:1.2.0androidx.compose.animation:animation-graphics:1.2.0已发布。版本 1.2.0 包含这些提交。

自 1.1.0 版本以来的重要更改

  • Compose 动画现在支持开发者选项中的“动画持续时间缩放”设置。
  • 大量新的实验性缓动曲线。
  • AnimatedImageVector现在支持repeatCountrepeatMode

版本 1.2.0-rc03

2022 年 6 月 29 日

androidx.compose.animation:animation:1.2.0-rc03androidx.compose.animation:animation-core:1.2.0-rc03androidx.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-rc02androidx.compose.animation:animation-core:1.2.0-rc02androidx.compose.animation:animation-graphics:1.2.0-rc02已发布。版本 1.2.0-rc02 包含这些提交。

错误修复

  • 已删除缓动函数上的ExperimentalEasingApi注释(Ied441

版本 1.2.0-rc01

2022 年 6 月 15 日

androidx.compose.animation:animation:1.2.0-rc01androidx.compose.animation:animation-core:1.2.0-rc01androidx.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-beta03androidx.compose.animation:animation-core:1.2.0-beta03androidx.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-beta02androidx.compose.animation:animation-core:1.2.0-beta02androidx.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-beta01androidx.compose.animation:animation-core:1.2.0-beta01androidx.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-alpha08androidx.compose.animation:animation-core:1.2.0-alpha08androidx.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-alpha07androidx.compose.animation:animation-core:1.2.0-alpha07androidx.compose.animation:animation-graphics:1.2.0-alpha07已发布。版本 1.2.0-alpha07 包含这些提交。

API 变更

版本 1.2.0-alpha06

2022 年 3 月 23 日

androidx.compose.animation:animation:1.2.0-alpha06androidx.compose.animation:animation-core:1.2.0-alpha06androidx.compose.animation:animation-graphics:1.2.0-alpha06已发布。版本 1.2.0-alpha06 包含这些提交。

API 变更

  • 更新了矢量可绘制对象的解析,以支持自动镜像,如果当前布局方向为 RTL,则翻转VectorPainter的内容。(I79cd9b/185760237

错误修复

  • 更新了矢量图形 API,以使用正确的可组合注释@VectorComposable代替@UiComposableI942bc

版本 1.2.0-alpha05

2022 年 3 月 9 日

androidx.compose.animation:animation:1.2.0-alpha05androidx.compose.animation:animation-core:1.2.0-alpha05androidx.compose.animation:animation-graphics:1.2.0-alpha05已发布。版本 1.2.0-alpha05 包含这些提交。

API 变更

  • 万岁!Compose 动画现在支持开发者选项中的“动画持续时间缩放”设置。(I5a4fcb/161675988

版本 1.2.0-alpha04

2022 年 2 月 23 日

androidx.compose.animation:animation:1.2.0-alpha04androidx.compose.animation:animation-core:1.2.0-alpha04androidx.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-alpha03androidx.compose.animation:animation-core:1.2.0-alpha03androidx.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-alpha02androidx.compose.animation:animation-core:1.2.0-alpha02androidx.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-alpha01androidx.compose.animation:animation-core:1.2.0-alpha01androidx.compose.animation:animation-graphics:1.2.0-alpha01 已发布。 版本 1.2.0-alpha01 包含这些提交。

API 变更

  • 使用 AnimatedImageVector.animatedVectorResource 而不是 animatedVectorResource 加载 <animated-vector> 资源文件。
    • 使用 rememberAnimatedVectorResource 而不是 AnimatedImageVector#painterFor 渲染 AnimatedImageVector。 (I9c300)

错误修复

  • 为 Animatable 和 AnimationResult 添加 toString 方法。 (Icd3a6)

依赖项更新

  • 现在依赖 Kotlin 1.6.10

版本 1.1

版本 1.1.1

2022 年 2 月 23 日

androidx.compose.animation:animation:1.1.1androidx.compose.animation:animation-core:1.1.1androidx.compose.animation:animation-graphics:1.1.1 已发布。 版本 1.1.1 包含这些提交。

错误修复

版本 1.1.0

2022 年 2 月 9 日

androidx.compose.animation:animation:1.1.0androidx.compose.animation:animation-core:1.1.0androidx.compose.animation:animation-graphics:1.1.0 已发布。 版本 1.1.0 包含这些提交。

自 1.0.0 以来重要的更改

  • 稳定支持 Android 12 过度滚动效果
  • 触摸目标大小改进
  • 请注意,相对于 Compose 1.0,Material 组件将扩展其布局空间以满足 Material 可访问性指南 中关于 触摸目标大小 的要求。例如,即使您将 Button 的大小设置为更小,Button 的触摸目标也会扩展到最小 48x48dp 的大小。这使 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-rc03androidx.compose.animation:animation-core:1.1.0-rc03androidx.compose.animation:animation-graphics:1.1.0-rc03 已发布。 版本 1.1.0-rc03 包含这些提交。

错误修复

  • 更新为支持 Compose Material 1.1.0-rc03

版本 1.1.0-rc01

2021年12月15日

androidx.compose.animation:animation:1.1.0-rc01androidx.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-beta04androidx.compose.animation:animation-core:1.1.0-beta04androidx.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-beta03androidx.compose.animation:animation-core:1.1.0-beta03androidx.compose.animation:animation-graphics:1.1.0-beta03 已发布。 版本 1.1.0-beta03 包含这些提交。

API 变更

  • 添加了新的修饰符 Modifier.onPlaced 以允许观察放置更改。因此,可以根据观察到的放置更改对子修饰符的偏移量进行其他更改。 (I558fd)
  • 新的 Crossfade 中 contentKey 支持。动画系统将使用 ContentKey 进行相等性检查。因此,可以通过为不同状态指定合适的 ContentKey 来实现自定义状态差异。

    ContentKey 还将用作保存和恢复内容的键。 (I2e055b/197907070)

版本 1.1.0-beta02

2021年11月3日

androidx.compose.animation:animation:1.1.0-beta02androidx.compose.animation:animation-core:1.1.0-beta02androidx.compose.animation:animation-graphics:1.1.0-beta02 已发布。 版本 1.1.0-beta02 包含这些提交。

错误修复

  • 支持工具的新动画 API。具体来说,它们允许工具检查 Transitions 中的动画及其配置。 (I4116e)

版本 1.1.0-beta01

2021年10月27日

androidx.compose.animation:animation:1.1.0-beta01androidx.compose.animation:animation-core:1.1.0-beta01androidx.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-alpha06androidx.compose.animation:animation-core:1.1.0-alpha06androidx.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-alpha05androidx.compose.animation:animation-core:1.1.0-alpha05androidx.compose.animation:animation-graphics:1.1.0-alpha05 已发布。 版本 1.1.0-alpha05 包含这些提交。

API 变更

  • EnterTransitionExitTransition 和一些 AnimatedVisibility API 已稳定。 MutableTransitionState.isIdle 也已不再是实验性的。 (I5072d)

  • 重大更改:Enter/ExitTransition 工厂中的 lambda 已移至参数列表的最后位置。 (I5072d)

版本 1.1.0-alpha04

2021年9月15日

androidx.compose.animation:animation:1.1.0-alpha04androidx.compose.animation:animation-core:1.1.0-alpha04androidx.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-alpha03androidx.compose.animation:animation-core:1.1.0-alpha03androidx.compose.animation:animation-graphics:1.1.0-alpha03 已发布。 版本 1.1.0-alpha03 包含这些提交。

新功能

  • 更新 Compose 1.1.0-alpha03 以依赖 Kotlin 1.5.30。 (I74545)

版本 1.1.0-alpha02

2021年8月18日

androidx.compose.animation:animation:1.1.0-alpha02androidx.compose.animation:animation-core:1.1.0-alpha02androidx.compose.animation:animation-graphics:1.1.0-alpha02 已发布。 版本 1.1.0-alpha02 包含这些提交。

API 变更

  • StartOffset 现在在可重复和无限重复中受支持,作为延迟开始时间或在动画开始前快进动画的一种方式。此开始偏移不会重复 (Ic679fb/195079908)
  • 用于缩放的新 Enter/Exit 过渡。它可以与其他类型的 Enter/ExitTransitions 结合使用。 (I372dab/191325593)

版本 1.1.0-alpha01

2021年8月4日

androidx.compose.animation:animation:1.1.0-alpha01androidx.compose.animation:animation-core:1.1.0-alpha01androidx.compose.animation:animation-graphics:1.1.0-alpha01 已发布。 版本 1.1.0-alpha01 包含这些提交。

API 变更

  • AnimatedImageVector 和相关 API 现在位于新的 androidx.compose.animation:animation-graphics 模块中。 (I60873)

错误修复

版本 1.0

版本 1.0.5

2021年11月3日

androidx.compose.animation:animation:1.0.5androidx.compose.animation:animation-core:1.0.5 已发布。 版本 1.0.5 包含这些提交。

错误修复

  • 修复了跟踪 derivedStateOf 实例导致的崩溃。 (aosp/1792247)

版本 1.0.4

2021年10月13日

androidx.compose.animation:animation:1.0.4androidx.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.3androidx.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.2androidx.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.1androidx.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.0androidx.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 和 AGP 7.1 的下一个版本中修复。(b/194289155

版本 1.0.0-rc02

2021 年 7 月 14 日

androidx.compose.animation:animation:1.0.0-rc02androidx.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-rc01androidx.compose.animation:animation-core:1.0.0-rc01 已发布。 版本 1.0.0-rc01 包含这些提交。

错误修复

  • InfiniteAnimationPolicy 移动到 androidx.compose.ui:uiI5eb09b/160602714

版本 1.0.0-beta09

2021 年 6 月 16 日

androidx.compose.animation:animation:1.0.0-beta09androidx.compose.animation:animation-core:1.0.0-beta09 已发布。 版本 1.0.0-beta09 包含这些提交。

API 变更

  • 新的 AnimatedContent 可组合项。它使用可自定义的 ContentTransform 管理其内容更改,当新目标内容进入和初始内容离开时。可以组合使用不同的进入和退出转换来产生自定义的外观和感觉。作为内容转换的一部分,AnimatedContent 自动动画调整其大小以匹配传入的内容。(I2c3df
  • 已删除 ManualFrameClock。如果您需要控制动画,请改用 composeTestRule.mainClock。(I3c3e8b/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

什么是配置文件规则?

  • 库的配置文件规则在文本文件 baseline-prof.txt 中指定,该文件位于 src/main 或等效目录中。该文件每行指定一个规则,在本例中,规则是用于匹配库中方法或类的模式。这些规则的语法是用于使用 adb shell profman --dump-classes-and-methods ... 时的人类可读 ART 配置文件格式的超集。这些规则采用以下两种形式之一来定位方法或类。

  • 方法规则将具有以下模式

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • 类规则将具有以下模式

    <CLASS_DESCRIPTOR>
    
  • 这里 <FLAGS> 是字符 HSP 中的一个或多个,以指示是否应将此方法标记为“热”、“启动”或“启动后”。

  • <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-beta08androidx.compose.animation:animation-core:1.0.0-beta08 已发布。 版本 1.0.0-beta08 包含这些提交。

错误修复

  • 现在 detectDragGesuresdetectVerticalGesturesdetectHorizontalGestures 将自动使用位置更改,无需在 onDrag 回调中调用 change.consumePositionChange (I42fc4b/185096350b/187320697
  • Modifier.onGloballyPositioned() 已更改为报告修饰符链中此修饰符的坐标,而不是应用所有修饰符后的布局坐标。这意味着现在修饰符的顺序会影响将报告哪些坐标。(Ieb67db/177926591

版本 1.0.0-beta07

2021 年 5 月 18 日

androidx.compose.animation:animation:1.0.0-beta07androidx.compose.animation:animation-core:1.0.0-beta07 已发布。 版本 1.0.0-beta07 包含这些提交。

API 变更

  • 新的 AnimatedVisibility API 支持在 MutableTransitionState 中指定可见性。这也允许通过 currentStateisIdleAnimatedVisibility 外部观察动画状态。
    • Transition 中的新子转换支持
    • 使用 AnimationScope.transition 支持在 AnimatedVisibility 中自定义退出/进入转换动画
    • 新的 animateEnterExit 修饰符可用于 AnimatedVisibility 的所有子项
    • 已弃用使用 initiallyVisible 参数的 AnimatedVisibility API (I702f3)

版本 1.0.0-beta06

2021 年 5 月 5 日

androidx.compose.animation:animation:1.0.0-beta06androidx.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-beta05androidx.compose.animation:animation-core:1.0.0-beta05 已发布。 版本 1.0.0-beta05 包含这些提交。

错误修复

  • 来自 ui-test-manifest 和 ui-tooling-data 的 AndroidManifest 文件现在与 Android 12 兼容 (I6f9deb/184718994)

版本 1.0.0-beta04

2021 年 4 月 7 日

androidx.compose.animation:animation:1.0.0-beta04androidx.compose.animation:animation-core:1.0.0-beta04 已发布。 版本 1.0.0-beta04 包含这些提交。

API 变更

  • 已删除 RowScopeColumnScopeBoxScopeBoxWithConstraintsScope 的公共实例。(I4e83eb/181869067

版本 1.0.0-beta03

2021 年 3 月 24 日

androidx.compose.animation:animation:1.0.0-beta03androidx.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-beta02androidx.compose.animation:animation-core:1.0.0-beta02 已发布。 版本 1.0.0-beta02 包含这些提交。

错误修复

版本 1.0.0-beta01

2021 年 2 月 24 日

androidx.compose.animation:animation:1.0.0-beta01androidx.compose.animation:animation-core:1.0.0-beta01 已发布。 版本 1.0.0-beta01 包含这些提交。

这是 Compose 1.0.0 Beta 的第一个版本。

API 变更

  • InteractionState 已替换为 [Mutable]InteractionSource
    • 接口负责发出/收集交互事件。

    • 不要再将 interactionState = remember { InteractionState() } 传递给诸如 ButtonModifier.clickable() 之类的组件,请使用 interactionSource = remember { MutableInteractionSource() }
    • 不要再使用: Interaction.Pressed in interactionState,请改用 InteractionSource 上的扩展函数,例如 InteractionSource.collectIsPressedAsState()。
    • 对于复杂的使用场景,您可以使用 InteractionSource.interactions 来观察 Interactions 流。有关更多信息,请参阅 InteractionSource 文档和示例。
    • (I85965b/152525426b/171913923b/171710801b/174852378)
  • smoothScrollBy 和 scrollBy 方法的包已更改为 androidx.compose.foundation.gestures.* (I3f7c1b/175294473)
  • 大小修饰符已重命名。Modifier.width/height/size 已重命名为 requiredWidth/requiredHeight/requiredSize。Modifier.preferredWidth/preferredHeight/preferredSize 已重命名为 width/height/size。(I5b414)
  • Orientation 已移动到 foundation 包。VelocirtTracker 已从 ui.gesture 移动到 ui.input.pointer。(Iff4a8b/175294473)
  • AnimationClockObservable 及其子类已被移除。AnimatedFloat 已被移除。(Icde52b/177457083)
  • Modifier.draggable 现在接受 DraggableState 而不是简单的 lambda。您可以通过 rememberDraggableState { delta -> } 创建状态以获得与之前相同的行为 (Ica70fb/175294473)
  • animate、animatedValue、AnimatedValue API 已被移除 (If27bcb/177457083)
  • AnimationEndReason.Interrupted 已被移除。如果动画被打断,将抛出 CancellationException。(I2cbbcb/179695417)
  • TargetAnimation API 已被移除。(If47d1b/177457083)

版本 1.0.0-alpha12

2021 年 2 月 10 日

androidx.compose.animation:animation:1.0.0-alpha12androidx.compose.animation:animation-core:1.0.0-alpha12 已发布。版本 1.0.0-alpha12 包含这些提交。

API 变更

  • Modifier.pointerInput 现在需要记住键来指示指针输入检测协程何时应为新的依赖项重新启动。(I849cd)
  • Bounds 已重命名为 DpRect (I4b32a)
  • 将 AnimationSpec 的参数名称统一为 animationSpec,贯穿整个动画系统。还限制 Enter/ExitTransition 接受 FiniteAnimationSpec。(Ie47c5b/177457083)
  • Animatable.snapTo 和 Animatable.stop 现在是挂起函数 (If4288)
  • 类似于我们之前如何删除 state { 0 } 可组合项,并现在推广使用 remember { mutableStateOf(0) },我们将删除 savedInstanceState { 0 } 可组合项。您应该改用 rememberSaveable { mutableStateOf(0) },如果 MutableState 内部使用的类型可以存储在 Bundle 中,它将自动保存和恢复。如果您之前传递了一个自定义的 saver 对象,现在您需要使用 rememberSaveable 的一个新的重载,该重载具有 stateSaver 参数。用法如下所示: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26b/177338004)
  • 更新了 Crossfade 的方法签名,使其与动画系统的其余部分更加一致。(Ib05edb/177457083)
  • rememberSavedInstanceState() 已重命名为 rememberSaveable() 并移动到 androidx.compose.runtime.saveable 包。(I1366eb/177338004)
  • RestorableStateHolder 已重命名为 SaveableStateHolder 并移动到 androidx.compose.runtime.saveable 包。内部方法 RestorableStateProvider 已重命名为 SaveableStateProvider。泛型已被移除,因此您只需将 Any 作为键传递。不再需要 Experimental 注解。(I0902eb/174598702)
  • 更新了 Modifier.animateContentSize API,使其与动画系统的其余部分保持一致。(I0bf75b/177457083)
  • AnimatedValue/Float 现已弃用。请改用 Animatable。(I71345b/177457083)
  • tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 和 pressIndicaitonGestureFilter 已弃用。请改用 Modifier.clickable 或 Modifier.pointerInput 以及 detectTapGestures 函数。(I6baf9b/175294473)
  • 引入了 InfiniteAnimationPolicy 协程上下文元素,它将应用于无限动画。默认情况下,不会安装任何策略,除非在使用 ComposeTestRule 运行测试时。(I50ec4b/151940543)
  • 在很少使用它们的几个类中,解构和 copy() 方法已被移除。(I26702b/178659281)
  • 动画中的播放时间现在统一为纳秒 (If776a)
  • compose:runtime-dispatch 工件现已弃用。MonotonicFrameClock 现在可以在 compose:runtime 中找到,AndroidUiDispatcher 可以在 compose:ui 中找到。(Ib5c36)
  • 添加了 Animation.isInfiniteVectorizedAnimationSpec.isInfinite,它们指示动画是否无限循环。这可用于动画的实现,以便对这些动画进行特殊处理。例如,可以显示特殊的“剩余时间”消息,或者在测试期间可以取消动画以防止无限等待空闲状态。(Iebb05b/151940543)
  • 使用 Long 代替 Uptime 作为动画时间类型 (Ie3aa7b/177420019)

版本 1.0.0-alpha11

2021 年 1 月 28 日

androidx.compose.animation:animation:1.0.0-alpha11androidx.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 有状态参数接口,使其具有返回 State<T> 的 @Composable 函数。添加 Animatable.asState() 以便更轻松地将 Animatable 转换为 State。还更改了 animateElevation,使其成为 Animatable 上的挂起扩展函数。(If613c)

错误修复

  • onCommit、onDispose 和 onActive 已弃用,取而代之的是 SideEffect 和 DisposableEffect API (If760e)
  • 现在支持 updateTransition 中的 Initial State (Ifd51d)
  • 已将内容描述参数添加到 Image 和 Icon。它用于向辅助功能服务提供描述 (I2ac4c)
  • invalidate 和 compositionReference() 现已弃用,取而代之的是 currentRecomposeScope 和 rememberCompositionReference。(I583a8)
  • Duration 和 Uptime 将替换为 Long 毫秒,此步骤消除了指针输入对这些类的依赖。(Ia33b2b/175142755b/177420019)
  • 现在可以在组合外部创建 clickable、toggleable 和 selectable (I0a130b/172938345b/175294473)
  • Easing 已更改为函数式接口 (Ib14e5)
  • LazyColumn/LazyRow/LazyVerticalGrid 范围的新 items(count: Int) 工厂方法。items(items: List)itemsIndexed(items: List) 现在是扩展函数,因此在使用时必须手动导入它们。数组的新扩展重载:items(items: Array) 和 itemsIndexed(Array) (I803fcb/175562574)
  • 在测试中利用 TestCoroutineDispatcher (I532b6)
  • 已移除 PointerInputData 并修改了 PointerInputChange 以使其包含 PointerInputData 的所有字段。使 PointerInputEvent 和 PointerInputEventData 成为内部的,因为它们未在任何公共 API 中使用。(Ifff97b/175142755)

版本 1.0.0-alpha10

2021 年 1 月 13 日

androidx.compose.animation:animation:1.0.0-alpha10androidx.compose.animation:animation-core:1.0.0-alpha10 已发布。版本 1.0.0-alpha10 包含这些提交。

API 变更

  • 修改了 Velocity,使其具有组件部分和数学运算。(Ib0447)
  • @ExperimentalTesting 重命名为 @ExperimentalTestApi,以与类似的实验性 api 注解保持一致 (Ia4502b/171464963)
  • 将 Position 重命名为 DpOffset 并删除了 getDistance() (Ib2dfd)

  • 移除 Any.identityHashCode() 公共 API (I025d7)

错误修复

  • 新的基于协程的 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-alpha09androidx.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)

错误修复

  • 偏移修饰符中的 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-alpha08androidx.compose.animation:animation-core:1.0.0-alpha08 已发布。 版本 1.0.0-alpha08 包含这些提交。

API 变更

  • 添加了 lint 检查以检查可组合 Lambda 参数命名和位置,以检查与 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)

错误修复

  • 将 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 字段不可为空。(Id468a)
  • offsetPx 修饰符已重命名为 offset。它们现在采用 Lambda 参数而不是 State。(Ic3021, b/173594846)
  • 用于在协程中运行动画的新 API (Ied662)
  • 弃用以 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-alpha07androidx.compose.animation:animation-core:1.0.0-alpha07 已发布。 版本 1.0.0-alpha07 包含这些提交。

错误修复

  • 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-alpha06androidx.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-alpha05androidx.compose.animation:animation-core:1.0.0-alpha05 已发布。 版本 1.0.0-alpha05 包含这些提交。

API 变更

  • 新的 Animation 接口和子类:这些类存储动画的起始和结束条件,因此仅通过播放时间即可查询值和速度 (Ie95bd, b/163329867)

错误修复

  • 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-alpha04androidx.compose.animation:animation-core:1.0.0-alpha04 已发布。 版本 1.0.0-alpha04 包含这些提交。

API 变更

  • 使用 @VisibleForTesting 对 rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled 和 textInputServiceFactory 进行注释,使它们成为内部 API 并隐藏其 kdoc (I554eb, b/168308412)

错误修复

  • 更新了许多图形 API
    • 更新了 scale 和 rotation 转换 API,以使用单个 Offset 参数来表示枢轴坐标,而不是在 DrawScope 和 DrawTransform 中分别使用 x/y 坐标的浮点参数。
    • 移除 Rect.expandToInclude 和 Rect.join 方法
    • 更新 Radius 文档,除了椭圆形外还说卵形
    • 添加文档以指示内联 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 半径值的单个参数
    • 移除假定其原点在 0,0 的矩形的 Size API
    • 向 Radius 添加解构 API
    • 将各种 RoundRect 扩展函数迁移为属性
    • (I8f5c7, b/168762961)
  • foundation.Box 已弃用。请改用 foundation.layout.Box。(Ie5950, b/167680279)

  • Stack 已重命名为 Box。之前存在的 Box 将被弃用,Compose 中将使用新的 Box(位于 compose.foundation.layout 中)。新 Box 的行为是在有多个子元素时将子元素一个叠加在一个上面,这与之前的 Box 不同,之前的 Box 的行为类似于 Column。(I94893b/167680279
  • Box 装饰参数已弃用。如果希望在 Box 上添加装饰/填充,请改用修饰符(Modifier.background、Modifier.border、Modifier.padding)。(Ibae92b/167680279)
  • 我们阻止了布局作用域内容的静态导入(例如 RowScope 中的 alignWithSiblings)。应改用显式作用域替代方案:with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }。(I216beb/166760797

版本 1.0.0-alpha03

2020 年 9 月 16 日

androidx.compose.animation:animation:1.0.0-alpha03androidx.compose.animation:animation-core:1.0.0-alpha03 已发布。版本 1.0.0-alpha03 包含这些提交。

错误修复

  • 布局 API 中,对 gravity 的使用已一致重命名为 align 或 alignment。(I2421ab/164077038

版本 1.0.0-alpha02

2020 年 9 月 2 日

androidx.compose.animation:animation:1.0.0-alpha02androidx.compose.animation:animation-core:1.0.0-alpha02 已发布。版本 1.0.0-alpha02 包含这些提交。

API 变更

  • 添加了 ManualFrameClock.hasAwaiters 用于查看是否有任何内容正在等待该时钟的帧;runWithManualClock 作为 runBlocking 的替代方案,用于运行需要 ManualFrameClock 的测试;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")
        }
    }
    

    (I0a85bb/161247083)

错误修复

  • onPreCommit 已弃用;onCommit 现在具有 onPreCommit 的行为。

    onCommit 和 onActive 现在在与提交组合更改的同一协调器帧中运行,而不是在下一个协调器帧的开头运行。(I70403

版本 1.0.0-alpha01

2020 年 8 月 26 日

androidx.compose.animation:animation:1.0.0-alpha01androidx.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-dev17androidx.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。使用 rect 更新了所有 PxBounds 的用法,并添加了适当的弃用/替换注释以帮助迁移。(I37038b/162627058

错误修复

  • PlacementScope.placeAbsolute() 已重命名为 PlacementScope.place(),之前的 PlacementScope.place() 已重命名为 PlacementScope.placeRelative()。因此,PlacementScope.place() 方法将不再自动在从右到左的上下文中镜像位置。如果需要此功能,请改用 PlacementScope.placeRelative()。(I873acb/162916675
  • state { ... } 可组合项现已弃用,为了清晰起见,建议改用显式调用 remember { mutableStateOf(...) }。这减少了整体 API 表面积和状态管理的概念数量,并与类属性委托的 by mutableStateOf() 模式相匹配。(Ia5727

版本 0.1.0-dev16

2020 年 8 月 5 日

androidx.compose.animation:animation:0.1.0-dev16androidx.compose.animation:animation-core:0.1.0-dev16 已发布。版本 0.1.0-dev16 包含这些提交。

API 变更

  • 内置向量转换器用于转换内置单位,现在可以通过 Foo.VectorConverter 访问。例如 Dp.VectorConverterColor.VectorConverterFloat.VectorConverter 等。(I3e273
  • Modifier.animateContentSize() 中支持结束监听器,以便在尺寸更改动画完成时通知监听器,以及动画的开始/结束尺寸。(I277b2
  • 新的 animateContentSize 修饰符,用于为其子修饰符的布局尺寸更改设置动画。(Ieffdc
  • 添加了 MonotonicFrameAnimationClock,它使您可以使用 MonotonicFrameClock 作为 AnimationClockObservable 来弥合基于新协程的时钟和仍然使用旧的基于回调的时钟的 API 之间的差距。

    MonotonicFrameClock 的等效项 ManualAnimationClock 现在是 ManualFrameClock。(I111c7b/161247083

错误修复

  • 从右到左支持的 API 已更新。已添加 LayoutDirectionAmbient,可用于读取和更改布局方向。Modifier.rtl 和 Modifier.ltr 已删除。(I080b3
  • 要求为 transitionDefinition 显式指定类型 T。(I1aded
  • foundation.shape.corner 包已扁平化为 foundation.share。(I46491b/161887429
  • Modifier.plus 已弃用,请改用 Modifier.then。“Then” 有更强的排序信号,同时还禁止键入 Modifier.padding().background() + anotherModifier,这会破坏链并难以阅读。(Iedd58b/161529964
  • Modifier.drawBackground 已重命名为 Modifier.background。(I13677

版本 0.1.0-dev15

2020 年 7 月 22 日

androidx.compose.animation:animation:0.1.0-dev15androidx.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 参数。(I87cfeb/159706180
  • 在顶级 API 中使用 AnimationSpec 而不是 AnimationBuilder,以阐明静态动画规范的概念。
    • 通过删除创建 AnimationSpec(例如 tween、spring)的 lambda 要求来改进转换 DSL。它们改为直接采用构造函数参数。
    • 改进 AnimationSpec 的整体易用性,打开构造函数而不是依赖构建器。
    • 将 KeyFrames 和 Tween 的持续时间和延迟更改为 Int。这消除了不必要的类型转换和方法重载(用于支持 Long 和 Int)。(Ica0b4)
  • 将 IntPx 的用法替换为 Int。将 IntPxPosition 替换为 IntOffset。将 IntPxSize 替换为 IntSize。(Ib7b44
  • 为了整合用于表示大小信息的类的数量,标准化使用 Size 类而不是 PxSize。这提供了内联类的优势,可以利用 long 打包 2 个 float 值来表示以 float 表示的宽度和高度。(Ic0191
  • 为了整合用于表示定位信息的类的数量,标准化使用 Offset 类而不是 PxPosition。这提供了内联类的优势,可以利用 long 打包 2 个 float 值来表示以 float 表示的 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
  • 对环境 API 进行了重大更改。有关详细信息,请参阅日志和 Ambient<T> 文档。(I4c7eeb/143769776
  • 新的重复模式:Reverse。此模式在 RepeatableSpec 或 VectorizedRepeatableSpec 中重复动画时反转上一次迭代。(Ibe0f5
  • 对 ManualAnimationClock 添加了 API:hasObservers: Boolean 和构造函数参数 dispatchOnSubscribe: Boolean。(Iaa134
  • 添加了用于在 AnimatedFloat 中获取最小/最大边界的 API。(Icd9cc

错误修复

  • 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 作为初始值。(Iad6a4b/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() 方法。(Ibacedb/152919067
  • runOnIdleComposerunOnUiThread 现在是全局函数,而不是 ComposeTestRule 上的方法。(Icbe8f
  • 将 [Mutable]State 属性委托运算符移动到扩展函数中,以支持 Kotlin 1.4 属性委托优化。调用者必须添加导入才能继续使用 by state { ... }by mutableStateOf(...)。(I5312c
  • ColoredRect 已弃用。请改用 Box(Modifier.preferredSize(width, height).drawBackground(color))。(I499fab/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
  • 为各种内联类类型添加了复制方法,包括:
    • Offset
    • Size
    • Radius
    • Motion
    • TransformOrigin
    • 已弃用 Size.copy 伴生对象方法,建议使用实例复制方法。(Ife290b/159905651
  • androidx.compose.ViewComposer 已移动到 androidx.ui.node.UiComposer。androidx.compose.Emittable 已删除。它与 ComponentNode 重复。androidx.compose.ViewAdapters 已删除。它们不再是受支持的使用案例。Compose.composeInto 已弃用。请改用 setContentsetViewContent。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