java - Android MotionLayout 不在真实设备上显示动画
问题描述
我在 Android Studio 4.0 的 MotionLayout 编辑器中创建动画。
我有这个动画场景:
<?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:constraintSetEnd="@+id/end"
motion:constraintSetStart="@id/start"
motion:duration="1000">
<KeyFrameSet>
</KeyFrameSet>
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint
android:id="@+id/bt_authorization_login"
motion:layout_constraintEnd_toEndOf="@+id/ll_login_password_container"
motion:layout_constraintStart_toEndOf="parent"
android:layout_width="0dp"
android:layout_height="@dimen/_35sdp"
android:visibility="invisible"
motion:layout_constraintTop_toBottomOf="@+id/tv_authorization_forget_password"
motion:layout_constraintStart_toStartOf="@+id/ll_login_password_container"
android:layout_marginTop="@dimen/_16sdp" />
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
</ConstraintSet>
</MotionScene>
MotionLayout Editor 中的动画效果很好。 编辑器中的动画
但是当我在真实设备上启动它时,动画不显示。我尝试了不同的设备。
如何在设备上启动动画?
解决方案
我建议在结束约束集中明确定义按钮约束。如果您只想更改约束集中的按钮可见性,也可以使用属性来简化代码。
<?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:constraintSetEnd="@+id/end"
motion:constraintSetStart="@id/start"
motion:duration="1000">
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint android:id="@+id/bt_authorization_login">
<PropertySet android:visibility="invisible" />
</Constraint>
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint android:id="@+id/bt_authorization_login">
<PropertySet android:visibility="visible" />
</Constraint>
</ConstraintSet>
</MotionScene>