diff --git a/app/src/main/java/com/binbin/androidowner/MainActivity.kt b/app/src/main/java/com/binbin/androidowner/MainActivity.kt index b85e856..ddbbfe4 100644 --- a/app/src/main/java/com/binbin/androidowner/MainActivity.kt +++ b/app/src/main/java/com/binbin/androidowner/MainActivity.kt @@ -16,7 +16,6 @@ import androidx.activity.compose.setContent import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.animateContentSize import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape diff --git a/app/src/main/java/com/binbin/androidowner/ui/theme/Animations.kt b/app/src/main/java/com/binbin/androidowner/ui/Animations.kt similarity index 63% rename from app/src/main/java/com/binbin/androidowner/ui/theme/Animations.kt rename to app/src/main/java/com/binbin/androidowner/ui/Animations.kt index ff49afb..c601dc5 100644 --- a/app/src/main/java/com/binbin/androidowner/ui/theme/Animations.kt +++ b/app/src/main/java/com/binbin/androidowner/ui/Animations.kt @@ -2,54 +2,55 @@ package com.binbin.androidowner.ui.theme import android.content.Context import androidx.compose.animation.* -import androidx.compose.animation.core.* +import androidx.compose.animation.core.FiniteAnimationSpec +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.VisibilityThreshold +import androidx.compose.animation.core.spring import androidx.compose.ui.unit.IntOffset -import androidx.compose.ui.unit.IntSize import androidx.navigation.NavBackStackEntry class Animations(myContext: Context){ - private val springFade = tween(durationMillis = 150) - private val springSlide:SpringSpec = SpringSpec(Spring.DampingRatioNoBouncy, Spring.StiffnessMediumLow, null) + private val fade: FiniteAnimationSpec = spring(stiffness = Spring.StiffnessMediumLow) + private val spring:FiniteAnimationSpec = spring(stiffness = Spring.StiffnessMediumLow, visibilityThreshold = IntOffset.VisibilityThreshold) - private val navIconSpringSlide:SpringSpec = SpringSpec(Spring.DampingRatioNoBouncy, Spring.StiffnessMediumLow, null) - val navIconEnterTransition:EnterTransition = expandHorizontally(navIconSpringSlide) + fadeIn() - val navIconExitTransition:ExitTransition = shrinkHorizontally(navIconSpringSlide) + fadeOut() + val navIconEnterTransition:EnterTransition = expandHorizontally() + fadeIn() + val navIconExitTransition:ExitTransition = shrinkHorizontally() + fadeOut() private val screenWidth = myContext.resources.displayMetrics.widthPixels - private val initialOffsetValue = screenWidth/12 - private val targetOffsetValue = screenWidth/12 + private val initialOffsetValue = screenWidth/8 + private val targetOffsetValue = screenWidth/8 val navHostEnterTransition: AnimatedContentTransitionScope.() -> EnterTransition = { - fadeIn(animationSpec = springFade) + + fadeIn(animationSpec = fade) + slideIntoContainer( - animationSpec = springSlide, + animationSpec = spring, towards = AnimatedContentTransitionScope.SlideDirection.End, initialOffset = {initialOffsetValue} ) } val navHostExitTransition: AnimatedContentTransitionScope.() -> ExitTransition = { - fadeOut(animationSpec = springFade) + + fadeOut(animationSpec = fade) + slideOutOfContainer( - animationSpec = springSlide, + animationSpec = spring, towards = AnimatedContentTransitionScope.SlideDirection.Start, targetOffset = {-targetOffsetValue} ) } val navHostPopEnterTransition: AnimatedContentTransitionScope.() -> EnterTransition = { - fadeIn(animationSpec = springFade) + + fadeIn(animationSpec = fade) + slideIntoContainer( - animationSpec = springSlide, + animationSpec = spring, towards = AnimatedContentTransitionScope.SlideDirection.End, initialOffset = {-initialOffsetValue} ) } val navHostPopExitTransition: AnimatedContentTransitionScope.() -> ExitTransition = { - fadeOut(animationSpec = springFade) + + fadeOut(animationSpec = fade) + slideOutOfContainer( - animationSpec = springSlide, + animationSpec = spring, towards = AnimatedContentTransitionScope.SlideDirection.Start, targetOffset = {targetOffsetValue} )