Fix find-by slide animations.
This commit is contained in:
parent
fc9d94701c
commit
4035932340
2 changed files with 47 additions and 6 deletions
|
@ -12,8 +12,6 @@ import android.os.Bundle
|
|||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContract
|
||||
import androidx.compose.animation.slideInHorizontally
|
||||
import androidx.compose.animation.slideOutHorizontally
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy
|
||||
import androidx.compose.foundation.layout.Box
|
||||
|
@ -69,6 +67,8 @@ import androidx.navigation.compose.dialog
|
|||
import androidx.navigation.compose.rememberNavController
|
||||
import androidx.navigation.navArgument
|
||||
import kotlinx.coroutines.launch
|
||||
import org.signal.core.ui.Animations.navHostSlideInTransition
|
||||
import org.signal.core.ui.Animations.navHostSlideOutTransition
|
||||
import org.signal.core.ui.Buttons
|
||||
import org.signal.core.ui.Dialogs
|
||||
import org.signal.core.ui.Dividers
|
||||
|
@ -120,10 +120,10 @@ class FindByActivity : PassphraseRequiredActivity() {
|
|||
NavHost(
|
||||
navController = navController,
|
||||
startDestination = "find-by-content",
|
||||
enterTransition = { slideInHorizontally(initialOffsetX = { it }) },
|
||||
exitTransition = { slideOutHorizontally(targetOffsetX = { -it }) },
|
||||
popEnterTransition = { slideInHorizontally(initialOffsetX = { -it }) },
|
||||
popExitTransition = { slideOutHorizontally(targetOffsetX = { it }) }
|
||||
enterTransition = { navHostSlideInTransition { it } },
|
||||
exitTransition = { navHostSlideOutTransition { -it } },
|
||||
popEnterTransition = { navHostSlideInTransition { -it } },
|
||||
popExitTransition = { navHostSlideOutTransition { it } }
|
||||
) {
|
||||
composable("find-by-content") {
|
||||
val title = remember(state.mode) {
|
||||
|
|
41
core-ui/src/main/java/org/signal/core/ui/Animations.kt
Normal file
41
core-ui/src/main/java/org/signal/core/ui/Animations.kt
Normal file
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Copyright 2024 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.signal.core.ui
|
||||
|
||||
import androidx.compose.animation.EnterTransition
|
||||
import androidx.compose.animation.ExitTransition
|
||||
import androidx.compose.animation.core.FiniteAnimationSpec
|
||||
import androidx.compose.animation.core.tween
|
||||
import androidx.compose.animation.slideInHorizontally
|
||||
import androidx.compose.animation.slideOutHorizontally
|
||||
import androidx.compose.runtime.Stable
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
|
||||
object Animations {
|
||||
|
||||
private val NAV_HOST_DEFAULT_ANIMATION_DURATION = 200.milliseconds
|
||||
|
||||
@Stable
|
||||
fun <T> navHostDefaultAnimationSpec(): FiniteAnimationSpec<T> {
|
||||
return tween<T>(
|
||||
durationMillis = NAV_HOST_DEFAULT_ANIMATION_DURATION.inWholeMilliseconds.toInt()
|
||||
)
|
||||
}
|
||||
|
||||
fun navHostSlideInTransition(initialOffsetX: (Int) -> Int): EnterTransition {
|
||||
return slideInHorizontally(
|
||||
animationSpec = navHostDefaultAnimationSpec(),
|
||||
initialOffsetX = initialOffsetX
|
||||
)
|
||||
}
|
||||
|
||||
fun navHostSlideOutTransition(targetOffsetX: (Int) -> Int): ExitTransition {
|
||||
return slideOutHorizontally(
|
||||
animationSpec = navHostDefaultAnimationSpec(),
|
||||
targetOffsetX = targetOffsetX
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue