android中的MotionLayout不适用于多个OnClick过渡

时间:2019-07-12 10:20:02

标签: android android-motionlayout

我在MotionLayout上遇到问题。 我已经创建了一个场景,当我使用一个onClick过渡时它可以工作。但是我需要两个。

我想做的是:单击视图中的一个按钮时,该视图将隐藏,而另一个视图将显示。这可行。 但是现在,当我单击另一个视图中的按钮时,我想显示第一个视图,而第二个视图需要隐藏。

这种类型的作品,唯一的问题是它不会过渡。它只是显示。

我的场景如下:

<?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="2000"
    motion:motionInterpolator="easeOut">
    <OnClick
        motion:clickAction="transitionToEnd"
        motion:targetId="@+id/hide_menu" />
</Transition>

<Transition
    motion:constraintSetEnd="@+id/end"
    motion:constraintSetStart="@+id/start"
    motion:duration="2000"
    motion:motionInterpolator="easeInOut">
    <OnClick
        motion:clickAction="transitionToStart"
        motion:targetId="@+id/quick_menu_show_menu" />
</Transition>

<ConstraintSet android:id="@+id/start">
    <Constraint
        android:id="@+id/sidebar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:translationX="0dp"
        motion:layout_constraintBottom_toBottomOf="parent"
        motion:layout_constraintStart_toStartOf="parent"
        motion:layout_constraintTop_toTopOf="parent" />

    <Constraint
        android:id="@+id/quick_menu"
        android:layout_width="19dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="4dp"
        android:translationX="-70dp"
        motion:layout_constraintBottom_toBottomOf="parent"
        motion:layout_constraintStart_toStartOf="parent"
        motion:layout_constraintTop_toTopOf="parent" />
</ConstraintSet>

<ConstraintSet android:id="@+id/end">
    <Constraint
        android:id="@+id/sidebar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:translationX="-70dp"
        motion:layout_constraintBottom_toBottomOf="parent"
        motion:layout_constraintStart_toStartOf="parent"
        motion:layout_constraintTop_toTopOf="parent" />

    <Constraint
        android:id="@+id/quick_menu"
        android:layout_width="19dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="4dp"
        android:translationX="0dp"
        motion:layout_constraintBottom_toBottomOf="parent"
        motion:layout_constraintStart_toStartOf="parent"
        motion:layout_constraintTop_toTopOf="parent" />
</ConstraintSet>

</MotionScene>

希望任何人都可以提供帮助。

亲切的问候,

JKorsten

1 个答案:

答案 0 :(得分:0)

由于某种原因,这可以解决问题,但我希望有人可以解释为什么。

<Transition
    motion:constraintSetEnd="@+id/start"
    motion:constraintSetStart="@+id/end"
    motion:duration="2000"
    motion:motionInterpolator="easeIn">
    <OnClick
        motion:clickAction="transitionToStart"
        motion:targetId="@+id/quick_menu_show_menu" />
</Transition>

在我读到它时:它从ConstraintSetEnd到ConstraintSetStart(transitionToStart)进行了easyIn,但是我需要将ConstraintSetEnd更改为@ + id / start,将ConstraintSetStart更改为@ + id / end。