@@ -37,39 +37,33 @@ class ComparisonFragment : ViewBoundAppFragment<ComparisonBinding>(ComparisonBin
3737
3838 private val viewModel by cropSessionInjectedViewModel<ComparisonViewModel , ComparisonViewModel .Factory >()
3939 private val navArgs by navArgs<ComparisonFragmentArgs >()
40- private var enterTransitionCompleted = false
4140
4241 override fun onAttach (context : Context ) {
4342 super .onAttach(context)
4443 hideSystemBars()
4544
46- sharedElementEnterTransition = TransitionInflater .from(context)
45+ sharedElementEnterTransition = cropEnterTransition(context)
46+ registerOnBackPressedHandler(::onBack)
47+ }
48+
49+ private fun cropEnterTransition (context : Context ) =
50+ TransitionInflater
51+ .from(context)
4752 .inflateTransition(android.R .transition.move)
4853 ?.setDuration(500 )
4954 ?.setInterpolator(DecelerateInterpolator (1.5f ))
50- ?.addListener(
51- object : TransitionListenerAdapter () {
52- override fun onTransitionEnd (transition : Transition ) {
53- super .onTransitionEnd(transition)
54-
55- if (! enterTransitionCompleted) {
56- enterTransitionCompleted = true
57- lifecycleScope.launchDelayed(200 ) {
58- viewModel.emitFadeOutTextArgs(
59- FadeOutTextView .Args (
60- textRes = com.w2sv.core.common.R .string.comparison_instruction,
61- iconRes = R .drawable.ic_info_24,
62- displayDuration = 4_000
63- )
64- )
65- }
66- }
67- }
55+ ?.onTransitionEnd {
56+ // Show instructions after short delay
57+ lifecycleScope.launchDelayed(200 ) {
58+ viewModel.emitFadeOutTextArgs(
59+ FadeOutTextView .Args (
60+ textRes = com.w2sv.core.common.R .string.comparison_instruction,
61+ iconRes = R .drawable.ic_info_24,
62+ displayDuration = 3_000
63+ )
64+ )
6865 }
69- )
70-
71- registerOnBackPressedHandler(::onBack)
72- }
66+ }
7367
7468 override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
7569 postponeEnterTransition(view)
@@ -153,3 +147,12 @@ class ComparisonFragment : ViewBoundAppFragment<ComparisonBinding>(ComparisonBin
153147 navController.popBackStack()
154148 }
155149}
150+
151+ private fun Transition.onTransitionEnd (callback : () -> Unit ): Transition =
152+ addListener(
153+ object : TransitionListenerAdapter () {
154+ override fun onTransitionEnd (transition : Transition ) {
155+ callback()
156+ }
157+ }
158+ )
0 commit comments