0

我正在尝试使用运动布局重现协调器布局折叠工具栏动画。

当我从 recyclerview 滚动(touchAnchorId 设置为 recycler)时,过渡效果很好,但是当我从图像滚动时,动画不流畅。

我附上折叠和展开的布局和折叠的场景。

在此先感谢您的帮助

扩展:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:descendantFocusability="blocksDescendants"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layoutDescription="@xml/collapsing_scene">

    <ImageView android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:scaleType="centerCrop"
               android:id="@+id/imageview"
               android:contentDescription="@null"
               app:layout_constraintTop_toTopOf="parent"
               app:layout_constraintEnd_toEndOf="parent"
               app:layout_constraintBottom_toBottomOf="parent"
               app:layout_constraintStart_toStartOf="parent"
               app:srcCompat="@drawable/android"/>

    <androidx.recyclerview.widget.RecyclerView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:id="@+id/recycler"
            android:background="#F44336"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/guideline"/>

    <androidx.constraintlayout.widget.Guideline
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/guideline"
            app:layout_constraintGuide_percent="0.5"/>

</androidx.constraintlayout.motion.widget.MotionLayout>

折叠:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:descendantFocusability="blocksDescendants"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <ImageView android:layout_width="0dp"
               android:layout_height="0dp"
               android:scaleType="centerCrop"
               android:id="@+id/imageview"
               android:contentDescription="@null"
               app:layout_constraintTop_toTopOf="parent"
               app:layout_constraintEnd_toEndOf="parent"
               app:layout_constraintBottom_toTopOf="parent"
               app:layout_constraintStart_toStartOf="parent"
               app:srcCompat="@drawable/android"/>

    <androidx.recyclerview.widget.RecyclerView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:id="@+id/recycler"
            android:background="#F44336"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/imageview"/>

    <androidx.constraintlayout.widget.Guideline
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/guideline"
            app:layout_constraintGuide_percent="0.5"/>

</androidx.constraintlayout.motion.widget.MotionLayout>

过渡:

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

    <Transition
            app:constraintSetEnd="@layout/collapsed"
            app:constraintSetStart="@layout/expanded"
            app:duration="500">

        <OnSwipe
                app:dragDirection="dragUp"
                app:touchAnchorId="@id/recycler"
                app:touchAnchorSide="top"
                app:onTouchUp="stop"/>
    </Transition>

</MotionScene>

动画

4

1 回答 1

0

你不能有一个真正的工具栏来做这个动画。

<activity
        android:name=".CollapsingToolbarActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">

在动画结束时,图像将改为“模拟”工具栏。

在此处输入图像描述

于 2019-10-28T17:26:49.837 回答