迄今为止,我已经阅读了所有有关
这是我的启动方式:(即使使用了
上面的复杂示例使用了
那么,如何逐个播放这些过渡效果呢?
MotionLayout
的可用文档,包括官方文档(这里),可用的示例,非常复杂的示例(这里)以及来自许多网站的其他示例。
到目前为止,我还没有弄清楚如何逐个播放/启动动画。
KeyPosition
和KeyAttribute
可能是答案,但我没有找到任何说明如何使用它们的示例/文档。
这是MotionScene
布局:<?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
motion:constraintSetStart="@+id/start"
motion:constraintSetEnd="@+id/end"
motion:duration="500">
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint
android:layout_width="wrap_content"
android:layout_height="wrap_content"
motion:layout_constraintTop_toBottomOf="parent"
motion:layout_constraintLeft_toLeftOf="parent"
motion:layout_constraintRight_toRightOf="parent"
android:id="@+id/bottomText"
/>
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint
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"
android:id="@+id/bottomText"
/>
</ConstraintSet>
<ConstraintSet android:id="@+id/start1">
<Constraint
android:layout_width="wrap_content"
android:layout_height="wrap_content"
motion:layout_constraintBottom_toTopOf="parent"
android:id="@+id/arcView"
/>
</ConstraintSet>
<ConstraintSet android:id="@+id/end1">
<Constraint
android:layout_width="match_parent"
android:layout_height="0dp"
motion:layout_constraintHeight_percent=".8"
motion:layout_constraintTop_toTopOf="parent"
android:id="@+id/arcView"
/>
</ConstraintSet>
</MotionScene>
这是我的启动方式:(即使使用了
autoTransition
,它也不会自动启动)val motionContainer : MotionLayout = findViewById(R.id.motionContainer)
motionContainer.setTransition(R.id.start, R.id.end)
motionContainer.transitionToEnd()
上面的复杂示例使用了
motionLayout.doOnEnd()
来启动下一个转换,但这不是可用的功能,在他的代码中也没有找到这个函数。在进一步检查中,doOnEnd()
是 Animator()
的一个函数,但与 MotionScene
/MotionLayout
没有关系。
我认为通过传递下一个过渡就可以像下面展示的那样工作,但那也没有帮助。val motionContainer : MotionLayout = findViewById(R.id.motionContainer)
motionContainer.setTransition(R.id.start, R.id.end)
motionContainer.transitionToEnd()
motionContainer.setTransition(R.id.start1, R.id.end1)
motionContainer.transitionToEnd()
那么,如何逐个播放这些过渡效果呢?
framePosition
来使动画自动按顺序播放为一个完整的动画,有关此内容请参见下面的投票答案。 - Lalit Fauzdar