You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jetpack Compose Navigation中移除默认转场动画

你配置的anim属性是传统View体系Navigation组件的动画配置规则,不适用于Compose导航场景,因此空anim文件不会生效。可通过以下两种方案移除Compose导航的默认转场动画:

方案1:全局移除所有导航动画

在NavHost初始化时直接配置全局默认转场为空,所有页面切换都会取消动画:

import androidx.compose.animation.EnterTransition
import androidx.compose.animation.ExitTransition

NavHost(
    navController = navHostController,
    startDestination = "your_start_route",
    // 所有入场转场设为空
    enterTransition = { EnterTransition.None },
    // 所有退场转场设为空
    exitTransition = { ExitTransition.None },
    // 回退栈入场转场设为空
    popEnterTransition = { EnterTransition.None },
    // 回退栈退场转场设为空
    popExitTransition = { ExitTransition.None }
) {
    // 原有各个目的地配置保持不变
    composable("this_route") { ThisPage() }
    composable("destination_route") { DestinationPage() }
}

方案2:仅移除指定目的地的动画

如果不需要全局关闭,只需要给特定页面配置空转场即可:

composable(
    route = "destination_route",
    enterTransition = { EnterTransition.None },
    exitTransition = { ExitTransition.None },
    popEnterTransition = { EnterTransition.None },
    popExitTransition = { ExitTransition.None }
) {
    DestinationPage()
}

注意事项

如果你使用的navigation-compose版本低于2.7.0-alpha01,官方原生不支持转场配置,需要引入Accompanist的navigation-animation库,配置逻辑和上述方案完全一致,仅导包路径不同。

内容的提问来源于stack exchange,提问作者Soroush Lotfi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:45:04