【划重点】根标签MotionScene
有一个defaultDuration
属性,表示所有未指定时间的动画的默认时间,默认为300毫秒。MotionScene
根标签 必须包含Transition
标签,可以有多个Transition
标签。Transition
标签是用来指定动画的开始和结束状态、任何中间状态以及触发动画的动作,可以理解为一个Transition
标签对应一个动画。同时,MotionScene
标签可以包含TransitionSet
标签,这是可选的。TransitionSet
标签主要为Transition
标签提供起始和结束状态的位置和属性。而TransitionSet
标签必须包含一个或多个Constraint
子标签。Constraint
标签用来定义布局中某个View
在动画中某个状态下位置(通过ConstraintLayout
的相关属性来约束)。
充分理解上段话的内容,下面通过实战加深理解:
1、在activity_motion.xml
布局文件增加一个id
为vStartStatus
的正方形View
。并在根标签MotionLayout
添加showPaths="true"
属性,用来显示正方形运动的路径。
<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
app:layoutDescription=“@xml/activity_motion_scene”
app:showPaths=“true”>
</androidx.constraintlayout.motion.widget.MotionLayout>
2.将activity_motion_scene.xml
文件中Constraint
标签的id
值修改成正方形的id
,即vStartStatus
。Constraint
标签的id
属性值需要与要起动画效果的View
的id
保持一致,这样Constraint
标签的所有属性都会作用于该View
。Constraint
标签的属性与ConstraintLayout