如何在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
相关产品推荐
相关产品推荐

