ConstraintLayout 动画
学习 ContraintLayout 动画的用法。
ConstraintLayout 除了将布局平坦化,提高 UI 性能,还有一个很有用的功能:只用很少的代码就能实现非常酷的动画(要求 API 9 以上)。
代码少到什么程度呢?少到像下面这样,只要 4 行!
1 | val constraintSet = ConstraintSet() |
效果演示
先上几个 demo 看看 ConstraintLayout 实现的动画效果。
主要类
ContraintLayout 动画涉及到的主要类和方法:
- ConstraintLayout
- ConstraintSet
- clone()
- applyTo()
- TransitionManager
- beginDelayedTransition()
- Transition
- ChangeBounds
- Interpolator
基本用法
建议先看看这个视频,如何用四行代码搞定动画。
ConstraintLayout 动画的基本用法如下:
1 | val constraintSet = ConstraintSet() |
当然,也可以指定自定义的过渡效果。(实际上你不指定过度效果的情况下,系统会使用默认的过渡效果 AutoTransition
)
1 | val constraintSet = ConstraintSet() |
工作原理
ConstraintLayout 动画的本质是这样的:使用 TransitionManager 在 Constrainlayout 中启动了一个延时动画,TransitionManager 在交换两种布局时自动使用动画效果。
ConstraintLayout 动画工作原理 对此有介绍,总结如下:
1 | val constraintSetOne = ConstraintSet() |
常见问题
Q: 会有重复代码吗? A: 不会。会自动重用第一个 layout 中的样式,比如字体大小和颜色
Q: 在旧设备上可以运行吗? A: 支持 API 9 以上的设备,对于不支持的设备直接显示第一个 layout,不会有动画效果
Q: 也可以使用 ObjectAnimator 实现相同的动画效果,ConstraintLayout 有什么好处? A: 代码量少,开发效率高,无需手写各种数学计算
注意:ConstraintLayout 动画只对直接子元素起作用