如何在 android 中为 NavigationUI 添加动画过渡?

How to add animation transition to NavigationUI in android?

我正在使用 NavigationUI 将目的地绑定到菜单项,但如何覆盖默认动画过渡?

根据文档https://developer.android.com/topic/libraries/architecture/navigation/navigation-ui#Tie-navdrawer,我找不到任何可以添加动画过渡的方法。

NavigationUI 不提供 API。但是,绝对没有使用 NavigationUI 的要求 - 它只是可选的辅助方法。

因此您可以复制/构建 what it actually does 的简化版本:

NavOptions navOptions = new NavOptions.Builder()
    .setLaunchSingleTop(true)  // Used to prevent multiple copies of the same destination
    .setEnterAnim(R.anim.your_enter_anim)
    .setExitAnim(R.anim.your_exit_anim)
    .setPopEnterAnim(R.anim.your_pop_enter_anim)
    .setPopExitAnim(R.anim.your_pop_exit_anim);
    .build();

// Assuming you have a MenuItem named item
navController.navigate(item.getItemId(), null, options);

这是一个旧线程,但最近我遇到了同样的问题。 这是在 NavigationUI

中覆盖默认过渡动画的理想解决方案

Click Here

我已经解决了这个问题,方法是在 'animator' 资源目录中创建默认的导航动画资源。我创建了这四个动画师资源文件-

  • res/animator/nav_default_enter_anim.xml
  • res/animator/nav_default_exit_anim.xml
  • res/animator/nav_default_pop_enter_anim.xml
  • res/animator/nav_default_pop_exit_anim.xml

其他都是一样的,按照Google的官方指南设置底部导航栏即可。

bottomNavBar = binding.bottomNavBar
        val navHostFragment =
            supportFragmentManager.findFragmentById(R.id.fNavHost) as NavHostFragment

        NavigationUI.setupWithNavController(bottomNavBar, navHostFragment.navController)