我正在使用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)
Enter过渡效果很好,但是出口过渡仍然是反向的Enter过渡。
输入转换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>
答案 0 :(得分:0)
这里的解决方案是增加片段RenderSliverPinnedPersistentHeader
中的过渡:
onCreate
导航调用的外观如下:
private val args: NewBookEntryFragmentArgs by navArgs()
override fun onCreate(savedInstanceState: Bundle?) {
if (Utils.isLollipop() && args.enterTransition > 0 && args.exitTransition > 0) {
sharedElementEnterTransition = TransitionInflater.from(requireContext()).inflateTransition(args.enterTransition)
sharedElementReturnTransition = null
returnTransition = TransitionInflater.from(requireContext()).inflateTransition(args.exitTransition)
}
new_book_entry_enter.xml:
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))
)
new_book_entry_exit.xml:
<?xml version="1.0" encoding="utf-8"?>
<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>