【问题标题】:How to remove default transitions in Jetpack Compose Navigation如何删除 Jetpack Compose Navigation 中的默认过渡
【发布时间】:2021-12-01 20:59:56
【问题描述】:

我正在使用以下代码片段从可组合导航到另一个,但它有一个默认的淡入淡出动画。我怎样才能删除它?我尝试使用一个空的 anim 资源,但它不起作用。

navHostController.navigate(
    "destination_route",
    navOptions {
        popUpTo("this_route") {
            inclusive = true
        }
        anim {
            enter = R.anim.empty_animation
            exit = R.anim.empty_animation
            popEnter = R.anim.empty_animation
            popExit = R.anim.empty_animation
        }
    }
)

R.anim.empty_animation:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!--Empty to disable animation-->
</set>

【问题讨论】:

    标签: android android-jetpack-compose android-jetpack-navigation


    【解决方案1】:

    目前,正如 EpicPandaForce 所说,这是不可能的,但那是因为它正在开发中!

    目前,此功能由伴奏者提供,在伴奏者导航动画工件中。你可以阅读更多关于它的信息here 或在更详细的博文here 中他们也谈到了它的未来。

    它的要点是,有了这个依赖项(当它最终合并到普通的 navigation-compose 库时没有它),您将能够编写如下内容:

    composable(
      "profile/{id}",
      enterTransition = { _, _ ->
        // Whatever EnterTransition object you want, like:
        fadeIn(animationSpec = tween(2000))
      }
    ) { // Content }
    

    【讨论】:

      【解决方案2】:

      目前,无法在 Navigation-Compose 当前版本(2.4.0-beta02)提供的 NavHost 中配置动画。

      @Composable
      public fun NavHost(
          navController: NavHostController,
          graph: NavGraph,
          modifier: Modifier = Modifier
      ) {
          val backStackEntry = visibleTransitionsInProgress.lastOrNull() ?: visibleBackStack.lastOrNull()
      
          var initialCrossfade by remember { mutableStateOf(true) }
          if (backStackEntry != null) {
              // while in the scope of the composable, we provide the navBackStackEntry as the
              // ViewModelStoreOwner and LifecycleOwner
              Crossfade(backStackEntry.id, modifier) { //// <<----- this 
      

      由于Crossfade 不可配置,因此无法更改过渡。

      要更改动画,您必须放弃使用 Navigation-Compose 提供的NavHost

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 2021-10-27
        • 2021-12-04
        • 2022-11-06
        • 1970-01-01
        • 2021-11-26
        相关资源
        最近更新 更多