Как сделать так, чтобы переход с общим элементом не боролся с анимацией скольжения фрагмента? - PullRequest
0 голосов
/ 19 апреля 2020

Я использую концепцию с несколькими фрагментами в новом навигаторе AndroidX. Я определил общий элемент перехода, передавая представление как дополнительный элемент навигации :

        findNavController().navigate(
            StartFragmentDirections.actionOpenRegisterNameAndEmail(),
            FragmentNavigatorExtras(mBinding.badHeader to "t_bad_header")
        )

Первый заголовок фрагмента определен так:

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

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/badHeader"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_delete"
        android:tint="@color/black"
        android:transitionName="t_bad_header"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

…

А вторая изменяет ограничения badHeader, чтобы они отображались по центру на экране:

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/badHeader"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_delete"
        android:tint="@color/black"
        android:transitionName="t_bad_header"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

Когда я пытаюсь продвинуться и вернуться через поток навигации, я вижу следующую анимацию, где значок общего элемента правильно перемещается назад и вперед от левой части экрана к середине, а остальная часть содержимого изменяется (текст ниже):

enter image description here

Теперь я хотел бы добавить анимацию слайда / выхода для остальной части содержимого, поэтому я подумал, что могу добавить enterAnim и связанные атрибуты в навигатор XML, например:

        <action
            android:id="@+id/actionOpenRegisterNameAndEmail"
            app:destination="@id/registerNameAndEmailFragment"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right"
            />

К сожалению, эта анимация слайд-шоу - бой переход общего элемента, как показано на следующем снимке экрана:

enter image description here

вставить второй

Есть ли какой-то особый параметр или опция, где я мог бы использовать как фрагментную анимацию, так и переходы общего элемента? Опять же, вот первая анимация для визуального сравнения:

...