MotionLayout 中的默认状态是什么?

What is the default state in MotionLayout?

我在 MotionLayout 中找不到任何关于 MotionScene 默认状态的文档。

我有如下简单的MotionScene

<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">


    <Transition
        app:constraintSetStart="@id/customStart"
        app:constraintSetEnd="@id/customEnd"
        app:duration="250" />


    <ConstraintSet android:id="@+id/customStart">
        <Constraint
            android:id="@id/someId"
            android:layout_width="0dp"
            android:layout_height="0dp" />
    </ConstraintSet>
    <ConstraintSet android:id="@+id/customEnd">
        <Constraint
            android:id="@id/someId"
            android:layout_width="0dp"
            android:layout_height="0dp"/>
    </ConstraintSet>


</MotionScene>

那么MotionLayout如何设置视图首次创建时的默认状态呢?我如何手动设置,比如 customEnd,作为默认状态?

MotionScene 现在有 StateSet 个元素,它有一个默认状态的属性。

<StateSet app:defaultState="@id/start"/>

MotionScene里面的第一个constraintSetStart定义了MotionLayout的默认状态。

如果你想改变它,你可以调用

motionLayout.setState(R.id.constraintSetId, motionLayout.width, motionLayout.height)

在您的 FragmentActivity 内。