在 android 导航组件中添加进入开始目的地的动画

Add enter animation to start destination in android navigation component

我知道如何在导航图中的 action 标签中添加进入和退出动画。我也知道如何在使用 navController 导航时使用 NavOptions 动态添加动画。

我想知道如何在导航图中为 StartDestination 添加进入动画。我可以通过两种方式做到这一点:

  1. 将动画应用到起始目的地的根视图
  2. 使用将被原始目标片段替换的临时起始目标片段。
  3. 正在将动画应用于 NavHostFragment 的容器 (FrameLayout) 并动态添加主机片段

但是我想知道有没有官方的解决方案。

谢谢

没有正式的方法来制作 startDestination 片段的动画,我相信你通常不应该制作它的动画。您的 startDestination 片段有几种方式进入视图,并且它们都有自己的方式来 运行 动画:

  1. 您的 NavHost 由 activity 托管,而此 activity 是从启动器启动的。启动器通常会覆盖 window 转换以使您的 activity 看起来很好。
  2. 您的 NavHost 由 activity 托管,而此 activity 由另一个 activity 启动。使用 activity transitions 覆盖默认值。
  3. 您的 NavHost 嵌套在片段中。包含片段 运行 在进入视图时有自己的过渡。

如您所见,在所有情况下,当 startDestination 片段出现或消失时,都会涉及另一个过渡,因此此处的片段过渡可能会与现有过渡发生冲突,使其看起来令人不快。

同时,如果你真的想把它做成动画,有很多方法。除了问题中提到的,我还能想到这些:

  1. 如果您使用的是原生片段,请在应用主题中使用属性 fragmentOpenEnterAnimationfragmentOpenExitAnimation 等设置默认片段转换。 更新:它在问题的上下文中没有意义,无论如何都不会起作用。
  2. 覆盖片段中的 Fragment.onCreateAnimationFragment.onCreateAnimator 方法,并且需要 return 动画/动画师。