<?xml version="1.0" encoding="utf-8"?>
<MotionScene
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto">
<Transition
android:id="@+id/first_half"
motion:constraintSetEnd="@id/top"
motion:constraintSetStart="@id/center"
motion:duration="800">
<KeyFrameSet>
<KeyPosition
motion:framePosition="40"
motion:motionTarget="@id/tv_profit_num"
motion:keyPositionType="deltaRelative"
motion:percentY="0.1"/>
<KeyPosition
motion:framePosition="70"
motion:motionTarget="@id/tv_profit_num"
motion:keyPositionType="deltaRelative"
motion:percentY="0.3"/>
<KeyAttribute
motion:framePosition="90"
motion:motionTarget="@id/tv_profit_num"
motion:keyPositionType="deltaRelative"
motion:percentY="0.6"
android:alpha="1"/>
</KeyFrameSet>
</Transition>
<Transition
android:id="@+id/all"
motion:constraintSetEnd="@id/top"
motion:constraintSetStart="@id/lower"
motion:duration="250">
<KeyFrameSet>
<KeyAttribute
motion:framePosition="50"
motion:motionTarget="@id/tv_profit_num"
motion:keyPositionType="parentRelative"
motion:percentY="0.5"
android:alpha="1"/>
</KeyFrameSet>
</Transition>
<Transition
android:id="@+id/lower_half"
motion:constraintSetEnd="@id/center"
motion:constraintSetStart="@id/lower"
motion:duration="800">
<KeyFrameSet>
<KeyAttribute
motion:framePosition="10"
motion:motionTarget="@id/tv_profit_num"
motion:keyPositionType="deltaRelative"
android:alpha="1"
motion:percentY="0.4"/>
<KeyPosition
motion:framePosition="30"
motion:motionTarget="@id/tv_profit_num"
motion:keyPositionType="deltaRelative"
motion:percentY="0.7"/>
<KeyPosition
motion:framePosition="60"
motion:motionTarget="@id/tv_profit_num"
motion:keyPositionType="deltaRelative"
motion:percentY="0.9"/>
</KeyFrameSet>
</Transition>
<ConstraintSet android:id="@+id/center">
<Constraint
android:id="@+id/tv_profit_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
motion:layout_constraintBottom_toBottomOf="parent"
motion:layout_constraintLeft_toLeftOf="parent"
motion:layout_constraintRight_toRightOf="parent"
motion:layout_constraintTop_toTopOf="parent"/>
</ConstraintSet>
<ConstraintSet android:id="@+id/top">
<Constraint
android:id="@+id/tv_profit_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="0"
motion:layout_constraintLeft_toLeftOf="parent"
motion:layout_constraintRight_toRightOf="parent"
motion:layout_constraintTop_toTopOf="parent" />
</ConstraintSet>
<ConstraintSet android:id="@+id/lower">
<Constraint
android:id="@+id/tv_profit_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="0"
motion:layout_constraintLeft_toLeftOf="parent"
motion:layout_constraintRight_toRightOf="parent"
motion:layout_constraintBottom_toBottomOf="parent" />
</ConstraintSet>
</MotionScene>
要切换Transition,它需要定义在同一个切换文件里面。如上面代码。
切换动画时需要调transitionToStart()
如下面代码:
motionLayout?.run{
transitionToStart()
setTransition(if(animationType == 0) R.id.all else R.id.lower_half)
transitionToEnd()
}
网友评论