MotionLayout 示例

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

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

基本运动

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

图 1. 拖动视图。

自定义属性 - backgroundColor

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

图 2. 拖动视图时更改其背景颜色。

ImageFilterView - 图像过渡

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

图 3. 拖动图像时更改其饱和度。

关键帧位置

此示例使用 <KeyFrameSet> 在运动期间更改视图的 Y 位置。

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

关键帧插值

此示例以关键帧位置示例为基础,向视图过渡添加了旋转和缩放。

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

关键帧周期

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

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

CoordinatorLayout (1/2)

此示例将 MotionLayout 添加到现有 AppBarLayout 以向应用栏添加运动。此示例在MotionLayout 简介(第三部分)中进一步描述。

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

CoordinatorLayout (2/2)

此示例将 MotionLayout 添加到现有 AppBarLayout 以向应用栏添加运动。

图 8. 滚动内容时应用栏展开,并且文本在应用栏中进出动画。

DrawerLayout (1/2)

此示例演示如何向 DrawerLayout 添加运动。此示例在MotionLayout 简介(第三部分)中进一步描述。

图 9. 展开 `DrawerLayout`。

DrawerLayout (2/2)

此示例演示如何向 DrawerLayout 添加运动。

图 10. 展开带有动画菜单文本的 `DrawerLayout`。

侧面板

此示例演示如何在将主要内容区域向右拖动时显示侧面板。

图 11. 通过拖动主要内容显示侧面板。

视差滚动

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

图 12. 头部图像中的视差效果。

ViewPager

此示例演示如何在 ViewPager 标签页之间滑动时添加运动。此示例在MotionLayout 简介(第三部分)中进一步描述。

图 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. 基于状态的不同运动。