如何将动画转换添加到android中的NavigationUI



我使用NavigationUI将目的地与菜单项绑定,但如何覆盖默认的动画转换?

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

NavigationUI不提供该API。但是,绝对不需要使用NavigationUI——它只是可选的辅助方法。

因此,您可以复制/构建其实际功能的简化版本:

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中默认转换动画的理想解决方案

点击此处

我已经解决了这个问题,在"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

其余部分相同,只需按照谷歌的官方指南设置底部导航栏即可。

bottomNavBar = binding.bottomNavBar
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.fNavHost) as NavHostFragment
NavigationUI.setupWithNavController(bottomNavBar, navHostFragment.navController)

最新更新