首页 > 解决方案 > 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 中的动画效果很好。 编辑器中的动画

但是当我在真实设备上启动它时,动画不显示。我尝试了不同的设备。

如何在设备上启动动画?

标签: javaandroidkotlinanimation

解决方案


我建议在结束约束集中明确定义按钮约束。如果您只想更改约束集中的按钮可见性,也可以使用属性来简化代码。

<?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>

推荐阅读