Я использую концепцию с несколькими фрагментами в новом навигаторе 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" />
Когда я пытаюсь продвинуться и вернуться через поток навигации, я вижу следующую анимацию, где значок общего элемента правильно перемещается назад и вперед от левой части экрана к середине, а остальная часть содержимого изменяется (текст ниже):
Теперь я хотел бы добавить анимацию слайда / выхода для остальной части содержимого, поэтому я подумал, что могу добавить 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"
/>
К сожалению, эта анимация слайд-шоу - бой переход общего элемента, как показано на следующем снимке экрана:
вставить второй
Есть ли какой-то особый параметр или опция, где я мог бы использовать как фрагментную анимацию, так и переходы общего элемента? Опять же, вот первая анимация для визуального сравнения: