3

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

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

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

但我想知道是否有为此目的的官方解决方案。

谢谢

4

1 回答 1

4

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

  1. NavHost由活动托管,并且此活动是从启动器启动的。启动器通常会覆盖窗口转换以使您的活动看起来很好。
  2. NavHost由一个活动托管,而该活动由另一个活动启动。使用活动转换覆盖默认转换。
  3. NavHost嵌套在一个片段中。包含的片段在出现时会运行自己的转换。

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

同时,如果你真的想为它制作动画,有很多方法。除了问题中提到的,我还可以考虑这些:

  1. 如果您使用的是原生片段,请在应用程序主题中使用 attributes 等设置默认片段fragmentOpenEnterAnimation过渡fragmentOpenExitAnimation更新:它在问题的上下文中没有意义,无论如何也不会起作用。
  2. 覆盖片段中的Fragment.onCreateAnimationFragment.onCreateAnimator方法并返回所需的动画/动画师。
于 2019-08-05T19:19:59.973 回答