折叠工具栏过渡的运动布局问题

时间:2019-07-27 09:49:02

标签: android android-layout android-transitions android-motionlayout

我正在尝试复制协调器布局以及带有运动布局的折叠工具栏动画。

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

我附加了折叠和展开的布局以及折叠的场景。

预先感谢您的帮助

展开:

/deep/ .info { ... }

崩溃:

<?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>

Animation

1 个答案:

答案 0 :(得分:0)

您没有真正的工具栏来制作此动画。

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

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

enter image description here