Частичное воспроизведение анимации motionLayout при первой прокрутке вверх - PullRequest
0 голосов
/ 20 июня 2019

Я использую MotionLayout для анимации пользовательской панели инструментов в соответствии с прокруткой RecyclerView. Когда я загружаю экран и прокручиваю вниз RecyclerView - все работает отлично. НО! Если я начну загружать экран и прокручивать вверх (нет элементов RecyclerView), анимация воспроизводится частично, TextView возвращает размер шрифта и горизонтальное выравнивание (не вертикальное) в конечное состояние, второй TextView также приходит в конечное состояние, но при этом панель инструментов не меняет размер.

Также, когда экран загружен, он не переходит в состояние, описанное в constraintSetStart

Файл макета

    <View
        android:id="@+id/blaBlaBackground"
        android:layout_width="@dimen/base_0dp"
        android:layout_height="192dp"
        android:layout_marginBottom="192dp"
        android:background="@drawable/bg"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/ivIconBackBlaBla"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:src="@drawable/ic_close_white"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/tvToolbarTitleBlaBla"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/base_16dp"
        android:layout_marginTop="56dp"
        android:fontFamily="@font/notosans_light"
        android:letterSpacing="-0.02"
        android:text="@string/label_create_order"
        android:textColor="@color/white"
        android:textSize="@dimen/base_24sp"
        app:layout_constraintBottom_toTopOf="@+id/rvBlaBlaScrollingContent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/tvToolbarSubtitleBlaBla"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:fontFamily="@font/notosans_regular"
        android:letterSpacing="0.01"
        android:text="@string/label_pickup_details"
        android:textColor="@color/white"
        android:textSize="@dimen/base_14sp"
        app:layout_constraintStart_toStartOf="@id/tvToolbarTitleBlaBla"
        app:layout_constraintTop_toBottomOf="@id/tvToolbarTitleBlaBla" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/tvCancelActionBlaBla"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="@dimen/base_16dp"
        android:fontFamily="@font/notosans_regular"
        android:gravity="center"
        android:text="@string/cancel"
        android:textColor="@color/white"
        android:textSize="@dimen/base_16sp"
        android:visibility="gone"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@id/ivIconBackBlaBla"
        tools:visibility="visible" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rvBlaBlaScrollingContent"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@drawable/bg_scrolling_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/blaBlaBackground" />

</com.mgx.app.launch.authorized.navigation.orders.create.participants.ParticipantLayout>

Файл описания

<?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"
    xmlns:motion="http://schemas.android.com/apk/res-auto">

    <Transition
        motion:constraintSetEnd="@id/collapsed"
        motion:constraintSetStart="@id/expanded">
        <OnSwipe
            motion:dragDirection="dragUp"
            motion:touchAnchorId="@+id/rvBlaBlaScrollingContent"
            motion:touchAnchorSide="top" />
    </Transition>


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

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

        <Constraint
            android:id="@id/BlaBlaBackground"
            android:layout_width="@dimen/base_0dp"
            android:layout_height="56dp"
            android:layout_marginBottom="192dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

        <Constraint
            android:id="@+id/ivIconBackBlaBla"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="@dimen/base_16dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Constraint
            android:id="@id/tvToolbarTitleBlaBla"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="61dp"
            android:layout_marginTop="@dimen/base_0dp"
            android:scaleX="0.84"
            android:scaleY="0.84"
            app:layout_constraintBottom_toTopOf="@id/rvBlaBlaScrollingContent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Constraint
            android:id="@id/tvToolbarSubtitleBlaBla"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="@dimen/base_16dp"
            android:visibility="invisible"
            app:layout_constraintStart_toStartOf="@id/ivIconBackBlaBla"
            app:layout_constraintTop_toBottomOf="@id/tvToolbarTitleBlaBla" />

        <Constraint
            android:id="@+id/rvBlaBlaScrollingContent"
            android:layout_marginTop="56dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </ConstraintSet>

</MotionScene>
...