KeyAttribute в MotionLayout игнорируется при изменении вида «видимость» - PullRequest
1 голос
/ 15 марта 2020

Я использую MotionLayout и <MotionScene /> для анимации контента bottomSheet View, после анимации смахивания.

Между start и end сцен Я хотел бы, чтобы отображалось представление view_player_status_margin с использованием видимости от gone до visible (без использования alpha, потому что другое представление является ссылкой по ограничению на то, которое я хочу сделать, появляется).

Можно использовать стандартный <Constraint /> в <ConstraintSet />, но когда я связываю видимость с <KeyAttribute />, чтобы вид отображался только в последних кадрах анимации, он не следует заданному кадру c Положение правила.

Мое использование <KeyAttribute /> кажется правильным, поскольку оно работает на альфе для двух других представлений.

Существуют ли определенные ограничения c с использованием KeyAttribute с атрибутом visibility ?

<?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:constraintSetEnd="@+id/player_scene_set_expanded"
        app:constraintSetStart="@+id/player_scene_set_collapsed"
        app:motionInterpolator="easeIn">

        <KeyFrameSet>

            <KeyAttribute
                android:visibility="gone"
                app:framePosition="80"
                app:motionTarget="@id/view_player_status_margin" />

            <KeyAttribute
                android:alpha="0"
                app:framePosition="20"
                app:motionTarget="@id/view_player_collapsed" />

            <KeyAttribute
                android:alpha="1"
                app:framePosition="20"
                app:motionTarget="@id/view_player_expanded" />

        </KeyFrameSet>

    </Transition>

    <ConstraintSet android:id="@+id/player_scene_set_collapsed">

        <Constraint
            android:id="@+id/view_player_collapsed"
            android:layout_width="0dp"
            android:layout_height="64dp"
            android:alpha="1"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />

        <Constraint
            android:id="@+id/view_player_expanded"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:alpha="0"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/view_player_status_margin"/>

        <Constraint
            android:id="@+id/view_player_status_margin"
            android:layout_width="0dp"
            android:layout_height="38dp"
            android:visibility="gone"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </ConstraintSet>

    <ConstraintSet android:id="@+id/player_scene_set_expanded">

        <Constraint
            android:id="@+id/view_player_collapsed"
            android:layout_width="0dp"
            android:layout_height="64dp"
            android:alpha="0"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />

        <Constraint
            android:id="@+id/view_player_expanded"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:alpha="1"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/view_player_status_line" />

        <Constraint
            android:id="@+id/view_player_status_line"
            android:layout_width="0dp"
            android:layout_height="38dp"
            android:visibility="visible"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </ConstraintSet>

</MotionScene>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...