Jetpack Navigation组件自定义过渡动画不生效问题求助
问题排查与解决步骤
- 跳转调用逻辑错误
你当前执行跳转的代码直接传入了目标Fragment的ID:
findNavController().navigate(R.id.reg2Fragment)
而自定义动画的配置是绑定在reg1Fragment指向reg2Fragment的action上的,只有调用对应action的ID跳转,才会加载action上配置的动画参数,将跳转代码修改为:
findNavController().navigate(R.id.action_reg1Fragment2_to_reg2Fragment)
- Navigation依赖冲突
你的依赖配置中重复声明了Navigation组件依赖,前两行已经指定了2.3.5版本的依赖,后续又重复添加了无版本号的依赖,会导致版本匹配异常,删除末尾重复的两行依赖即可:
// 删除以下两行重复声明 implementation 'androidx.navigation:navigation-fragment-ktx' implementation 'androidx.navigation:navigation-ui-ktx'
如果修改后依然存在异常,建议将Navigation版本统一升级到2.5.3及以上的稳定版,修复低版本已知的动画兼容问题。
- 动画资源配置校验
- 确认你编写的平移动画文件存放路径为
res/anim/目录,文件名为nav_default_enter_anim.xml,和navGraph中配置的app:enterAnim="@anim/nav_default_enter_anim"完全一致 - 如果你使用的是属性动画,需要存放在
res/animator/目录下,配置时要使用app:enterAnim="@animator/xxx"的格式
- 主题动画兼容校验
如果全局Material主题配置了窗口动画,可能会覆盖Fragment导航动画,可在主题配置中添加如下属性关闭系统默认窗口动画:
<item name="android:windowAnimationStyle">@null</item>
内容的提问来源于stack exchange,提问作者Mohammad Khalid Ibrahimi
相关产品推荐
相关产品推荐

