MotionLayout 示例

本文档包含有关如何使用 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. 组合效果以创建复杂的运动。

片段过渡 (1/2)

此示例演示如何使用MotionLayout在片段之间进行过渡。

图 18. 片段过渡。

片段过渡 (2/2)

此示例演示如何使用MotionLayout在片段之间进行过渡。

图 19. 片段过渡。

类似 YouTube 的运动

此示例演示了在紧凑视图和带附加内容的全屏体验之间进行过渡。

图 20. 类似 YouTube 的片段过渡。

KeyTrigger

此示例演示了如何在过渡跨越进度阈值时显示和隐藏浮动操作按钮。

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

多状态

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

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