Проблема с несколькими переходами в Android MotionLayout - PullRequest
0 голосов
/ 25 октября 2018

Я играю с MotionLayout в Android.Я использую версию альфа 2.

'com.android.support.constraint:constraint-layout:2.0.0-alpha2'

Я хочу реагировать на два разных нажатия кнопок и запускать анимацию для каждого из них.Мой текущий подход состоит в установке двух Transitions в MotionScene с триггером OnClick в каждом.

Проблема в том, что, похоже, найден только первый переход.Со вторым просто ничего не происходит.Я делаю что-то не так или вы можете просто установить один переход на MotionScene?Если это так, то есть ли другое решение проблемы?

Вот важные части моей сцены движения.

<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto">

<Transition
    motion:constraintSetStart="@id/startHome"
    motion:constraintSetEnd="@id/endHome"
    motion:duration="300">
    <OnClick
        motion:mode="toggle"
        motion:target="@+id/imageView_bottom_home" />
</Transition>

<Transition
    motion:constraintSetStart="@id/startSearch"
    motion:constraintSetEnd="@id/endSearch"
    motion:duration="300">
    <OnClick
        motion:mode="toggle"
        motion:target="@+id/imageView_bottom_search" />
</Transition>

<ConstraintSet android:id="@+id/startSearch">
    <Constraint
        android:id="@id/imageView_bottom_search"
        ...startConstraints... />
</ConstraintSet>

<ConstraintSet android:id="@+id/endSearch">
    <Constraint
        android:id="@id/imageView_bottom_search"
        ...endConstraints... />
</ConstraintSet>

<ConstraintSet android:id="@+id/startHome">
    <Constraint
        android:id="@id/imageView_bottom_home"
        ...startConstraints... />
</ConstraintSet>

<ConstraintSet android:id="@+id/endHome">
    <Constraint
        android:id="@id/imageView_bottom_home"
        ...endConstraints... />
</ConstraintSet>

Любая помощь приветствуется.

С уважением

1 Ответ

0 голосов
/ 27 октября 2018

У меня была такая же проблема.Решение, которое я нашел, состояло в том, чтобы выбрать, какой из переходов:

(в коде Java) ...

MotionLayout motionConteiner = findViewById(R.id.motion_container);
button1.setOnClickListener((v) -> {
            motionConteiner.setTransition(R.id.start1, R.id.end1);
            motionConteiner.transitionToEnd();//                
        });
button2.setOnClickListener((v) -> {
            motionConteiner.setTransition(R.id.start2, R.id.end2);
            motionConteiner.transitionToEnd();//                
        });
...