我的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 在其他地方。非常感谢你的帮助!!
3条答案
按热度按时间qnakjoqk1#
最近Google Accompanist添加了一个库,为Jetpack Navigation Compose提供了Compose Animation支持。一定要去看看。👍🏻
https://github.com/google/accompanist/tree/main/navigation-animation
5vf7fwbs2#
仍然没有让Crossfade再次工作,但我能够在NavHost中实现一些转换。希望这对某人有帮助。如果您想微调这些高级动画,请参阅以下文档:https://developer.android.com/jetpack/compose/animation#animatedvisibility
然后简单地用动画 Package NavHost可组合声明,如下所示
hl0ma9xz3#
根据文档,Accompanist库将被弃用,其中说:
现在AnimatedContent已经稳定了,我们可以将代码从伴奏导航动画移回导航编写本身。
这意味着在AnimatedNavHost中存在的对设置自定义过渡的所有支持在NavHost中直接受支持。
这意味着您将能够使用常规NavHost实现相同的功能,该NavHost现在有4个新参数,即
enterTransition
、exitTransition
、popEnterTransition
和popExitTransition
。