在Android导航组件中添加Enter动画以启动目标

时间:2019-08-02 07:32:59

标签: android android-jetpack android-navigation android-jetpack-navigation android-navigation-graph

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

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

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

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

谢谢

1 个答案:

答案 0 :(得分:2)

目前尚无官方的startDestination片段动画制作方法,我相信您通常不应该对其进行动画处理。您的startDestination片段有几种显示方式,它们都有自己的运行动画的方式:

  1. 您的NavHost由一个活动托管,并且该活动是从启动程序启动的。启动器通常会覆盖窗口过渡,以使您的活动看起来更美观。
  2. 您的NavHost由一个活动托管,该活动由另一个活动启动。使用activity transitions覆盖默认值。
  3. 您的NavHost嵌套在一个片段中。出现时,包含的片段会运行自己的过渡。

在所有情况下,您都可以看到startDestination片段的出现或消失时还涉及另一个过渡,因此此处的片段过渡可能会与现有过渡发生碰撞,从而使其显得不愉快。

同时,如果您真的想为其设置动画,则有很多方法。除了问题中提到的以外,我还可以考虑以下问题:

  1. 如果您正在使用本机片段,请在应用程序主题中使用属性fragmentOpenEnterAnimationfragmentOpenExitAnimation等设置默认片段过渡。 更新:在问题的上下文中没有任何意义,反正还是行不通的。
  2. 在片段中覆盖Fragment.onCreateAnimationFragment.onCreateAnimator方法并返回所需的动画/动画师。