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