Я показываю фрагмент, используя компонент архитектуры навигации androidx.
Фрагмент показан переходом общего элемента ArcMotion, но выходной переход должен быть простым скольжением вниз.
Я показываю фрагмент следующим образом:
findNavController().navigate(
EntriesFragmentDirections.actionEntriesFragmentToNewBookEntryFragment(
bookEntryType = mEntriesViewPager.currentItem,
enterTransition = R.transition.new_book_entry_enter,
exitTransition = R.transition.new_book_entry_exit
),
FragmentNavigatorExtras(fabEntriesNewBookEntry to getString(R.string.transition_new_book_entry_fragment))
)
И я применяю переходы во фрагменте в onCreate
:
sharedElementEnterTransition = TransitionInflater.from(requireContext()).inflateTransition(args.enterTransition)
exitTransition = TransitionInflater.from(requireContext()).inflateTransition(args.exitTransition)
Входной переход работает хорошо, ноВыходной переход по-прежнему является обратным входным переходом.
Входной переход xml:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:duration="@android:integer/config_mediumAnimTime">
<transition
class="at.guger.moneybook.ui.transition.MorphTransform"
app:endColor="?colorSurface"
app:endCornerRadius="@dimen/zero"
app:startColor="?colorSecondary"
app:startCornerRadius="@dimen/fabRadius" />
</transitionSet>
Выходной переход xml:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime">
<slide android:slideEdge="bottom" />
</transitionSet>