diff --git a/app/src/main/java/io/timelimit/android/ui/MainActivity.kt b/app/src/main/java/io/timelimit/android/ui/MainActivity.kt index f2042f4..6e393e0 100644 --- a/app/src/main/java/io/timelimit/android/ui/MainActivity.kt +++ b/app/src/main/java/io/timelimit/android/ui/MainActivity.kt @@ -242,7 +242,9 @@ class MainActivity : AppCompatActivity(), ActivityViewModelHolder, U2fManager.De val isClosing = from.state.hasPrevious(to.state) if (isOpening) Transition.openScreen - else if (isClosing) Transition.closeScreen + else if (isClosing) + if (from.state.previous == to.state) Transition.closeScreen + else Transition.bigCloseScreen else Transition.swap } } diff --git a/app/src/main/java/io/timelimit/android/ui/animation/Transition.kt b/app/src/main/java/io/timelimit/android/ui/animation/Transition.kt index c6b31db..db67502 100644 --- a/app/src/main/java/io/timelimit/android/ui/animation/Transition.kt +++ b/app/src/main/java/io/timelimit/android/ui/animation/Transition.kt @@ -33,6 +33,19 @@ object Transition { targetContentZIndex = -1f ) + val bigCloseScreen = run { + val speed = 250 + + fun phase1() = tween(speed, 0, FastOutLinearInEasing) + fun phase2() = tween(speed, speed, LinearOutSlowInEasing) + + ContentTransform( + initialContentExit = slideOutHorizontally(phase1()) { it } + fadeOut(phase1()), + targetContentEnter = slideInHorizontally(phase2()) { -it / 2 } + fadeIn(phase2()), + targetContentZIndex = -1f + ) + } + val swap = run { val speed = 250