kotlin Jetpack Compose Crossfade在Alpha中损坏

vxbzzdmp  于 2023-06-30  发布在  Kotlin
关注(0)|答案(3)|浏览(138)

我的crossfade动画不再工作,因为组成阿尔法发布,我真的很感激一些帮助让他们再次工作。我对Android/Compose相当陌生。我知道Crossfade正在其targetState中寻找状态更改来触发crossfade动画,但我不知道如何将其合并。我正在尝试将某些可合成对象 Package 在交叉淡入淡出动画中。
这里是官方文档和有用的Playground示例,但自从Alpha发布以来,我仍然无法让它工作https://developer.android.com/reference/kotlin/androidx/compose/animation/package-summary#crossfade https://foso.github.io/Jetpack-Compose-Playground/animation/crossfade/
下面是我的代码,在这个示例中,我希望使用String当前路由本身作为targetState作为mutableStateOf对象。我愿意用任何有用的方法。

@Composable
fun ExampleComposable() {

val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentRoute: String? = navBackStackEntry?.arguments?.getString(KEY_ROUTE)

val exampleRouteTargetState = remember { mutableStateOf(currentRoute)}

Scaffold(
    ...
    NavHost(navController, startDestination = "Courses") {
    composable("Route") {
        Crossfade(targetState = exampleRouteTargetState, animationSpec = tween(2000)) {
            ExampleComposable1()
        }
    }
    composable("Other Route")
        ExampleComposable2()
    }
)
...

}
导航不应该触发“exampleRouteTargetState”变量的状态更改,然后触发交叉渐变吗?如果您认为在NavHost中 Package 可组合对象可能会产生问题,我也可以将其 Package 在其他地方。非常感谢你的帮助!!

qnakjoqk

qnakjoqk1#

最近Google Accompanist添加了一个库,为Jetpack Navigation Compose提供了Compose Animation支持。一定要去看看。👍🏻
https://github.com/google/accompanist/tree/main/navigation-animation

5vf7fwbs

5vf7fwbs2#

仍然没有让Crossfade再次工作,但我能够在NavHost中实现一些转换。希望这对某人有帮助。如果您想微调这些高级动画,请参阅以下文档:https://developer.android.com/jetpack/compose/animation#animatedvisibility

@ExperimentalAnimationApi
@Composable
fun ExampleAnimation(content: @Composable () -> Unit) {
    AnimatedVisibility(
        visible = true,
        enter = fadeIn(initialAlpha = 0.3f),
        exit = fadeOut(),
        content = content,
        initiallyVisible = false
    )
}

然后简单地用动画 Package NavHost可组合声明,如下所示

NavHost(navController, startDestination = "A Route") {
composable(Screen.YourObject.Route) {
    ExampleAnimation {
        YourComposable()
    }
}
hl0ma9xz

hl0ma9xz3#

根据文档,Accompanist库将被弃用,其中说:
现在AnimatedContent已经稳定了,我们可以将代码从伴奏导航动画移回导航编写本身。
这意味着在AnimatedNavHost中存在的对设置自定义过渡的所有支持在NavHost中直接受支持。
这意味着您将能够使用常规NavHost实现相同的功能,该NavHost现在有4个新参数,即enterTransitionexitTransitionpopEnterTransitionpopExitTransition

相关问题