MotionLayout 示例

尝试使用 Compose 方式
Jetpack Compose 是推荐用于 Android 的界面工具包。了解如何在 Compose 中使用动画。

本文档包含有关如何使用 MotionLayout。 每个示例都包含一个演示运动的视频,以及运动场景和布局的相应代码。

基本运动

此示例包含一个视图,您可以触摸并拖动该视图以水平移动。

图 1. 拖动视图。

自定义属性 - backgroundColor

此示例与基本运动示例类似。除基本运动外,视图的背景颜色也会随着视图的移动而变化。

图 2. 拖动视图,同时其 背景颜色发生变化。

ImageFilterView - 图片转换

此示例展示了如何转换 ImageFilterView 的饱和度值。

图 3. 拖动图片,同时其 饱和度发生变化。

关键帧位置

此示例使用 <KeyFrameSet> 在运动过程中更改视图在 Y 轴上的位置。

图 4. 拖动视图并更改其 Y 轴位置。

关键帧插值

此示例基于关键帧位置示例, 在视图转换中添加了旋转和缩放。

图 5. 拖动视图并更改其 Y 轴位置、旋转和缩放。

关键帧周期

此示例添加了 <KeyCycle> 元素,以便在视图中添加波状运动。

图 6. 拖动具有波状 运动的视图,同时更改其颜色。

CoordinatorLayout (1/2)

此示例将 MotionLayout 添加到了现有的 AppBarLayout 中,以在应用栏中添加运动。此示例在 MotionLayout 简介(第 III 部分)中进行了详细说明。

图 7. 滚动内容,同时应用栏展开。

CoordinatorLayout (2/2)

此示例将 MotionLayout 添加到了现有的 AppBarLayout 中,以在应用栏中添加运动。

图 8. 滚动内容,同时应用栏展开,并且文本在应用栏中以动画形式显示和隐藏。

DrawerLayout (1/2)

此示例显示了如何将运动添加到 DrawerLayout 中。此示例在 MotionLayout 简介(第 III 部分)中进行了详细说明。

图 9. 展开 `DrawerLayout`。

DrawerLayout (2/2)

此示例显示了如何将运动添加到 DrawerLayout 中。

图 10. 展开 `DrawerLayout`,其中包含 动画菜单文本。

侧边栏

此示例显示了如何在将主内容区域拖动到右侧时显示侧边栏。

图 11. 通过拖动主内容显示侧边栏。

视差

此示例演示了视差背景,其中不同的背景层以不同的速度移动。

图 12. 标题图片中的视差效果。

ViewPager

此示例显示了如何在 ViewPager 标签之间滑动时添加运动。 此示例在 MotionLayout 简介(第 III 部分)中进行了详细说明。

图 13. 滑动 `ViewPager` 时标题图片中的视差效果。

ViewPager - Lottie

此示例显示了如何在 ViewPager 标签之间滑动时添加运动。

图 14. 一张图片,显示了滑动 `ViewPager` 时标题图片中的 Lottie 效果。

复杂运动 (1/3)

此示例结合了之前示例中的元素来演示复杂运动。

图 15. 结合使用多种效果来创建 复杂运动。

复杂运动 (2/3)

此示例结合了之前示例中的元素来演示复杂运动。

图 16. 结合使用多种效果来创建 复杂运动。

复杂运动 (3/3)

此示例结合了之前示例中的元素来演示复杂运动。

图 17. 结合使用多种效果来创建 复杂运动。

Fragment 转场 (1/2)

此示例显示了如何使用 MotionLayout 在 Fragment 之间转换。

图 18. Fragment 转场。

Fragment 转换 (2/2)

此示例显示了如何使用 MotionLayout 在 Fragment 之间转换。

图 19. Fragment 转场。

类似 YouTube 的运动

此示例演示了如何在精简视图和带有其他内容的全屏视图之间转换。

图 20. 类似于 YouTube 的 Fragment 转换。

KeyTrigger

此示例演示了如何在转换超过进度阈值时显示和隐藏悬浮操作按钮。

图 21. 显示和隐藏悬浮操作 按钮。

多状态

此示例显示了如何使用状态来确定要应用哪个运动。

图 22. 基于状态的不同运动。