在 android 导航组件中添加进入开始目的地的动画
Add enter animation to start destination in android navigation component
我知道如何在导航图中的 action
标签中添加进入和退出动画。我也知道如何在使用 navController
导航时使用 NavOptions
动态添加动画。
我想知道如何在导航图中为 StartDestination
添加进入动画。我可以通过两种方式做到这一点:
- 将动画应用到起始目的地的根视图
- 使用将被原始目标片段替换的临时起始目标片段。
- 正在将动画应用于
NavHostFragment
的容器 (FrameLayout
) 并动态添加主机片段
但是我想知道有没有官方的解决方案。
谢谢
没有正式的方法来制作 startDestination
片段的动画,我相信你通常不应该制作它的动画。您的 startDestination
片段有几种方式进入视图,并且它们都有自己的方式来 运行 动画:
- 您的
NavHost
由 activity 托管,而此 activity 是从启动器启动的。启动器通常会覆盖 window 转换以使您的 activity 看起来很好。
- 您的
NavHost
由 activity 托管,而此 activity 由另一个 activity 启动。使用 activity transitions 覆盖默认值。
- 您的
NavHost
嵌套在片段中。包含片段 运行 在进入视图时有自己的过渡。
如您所见,在所有情况下,当 startDestination
片段出现或消失时,都会涉及另一个过渡,因此此处的片段过渡可能会与现有过渡发生冲突,使其看起来令人不快。
同时,如果你真的想把它做成动画,有很多方法。除了问题中提到的,我还能想到这些:
如果您使用的是原生片段,请在应用主题中使用属性 fragmentOpenEnterAnimation
、fragmentOpenExitAnimation
等设置默认片段转换。 更新:它在问题的上下文中没有意义,无论如何都不会起作用。
- 覆盖片段中的
Fragment.onCreateAnimation
或 Fragment.onCreateAnimator
方法,并且需要 return 动画/动画师。
我知道如何在导航图中的 action
标签中添加进入和退出动画。我也知道如何在使用 navController
导航时使用 NavOptions
动态添加动画。
我想知道如何在导航图中为 StartDestination
添加进入动画。我可以通过两种方式做到这一点:
- 将动画应用到起始目的地的根视图
- 使用将被原始目标片段替换的临时起始目标片段。
- 正在将动画应用于
NavHostFragment
的容器 (FrameLayout
) 并动态添加主机片段
但是我想知道有没有官方的解决方案。
谢谢
没有正式的方法来制作 startDestination
片段的动画,我相信你通常不应该制作它的动画。您的 startDestination
片段有几种方式进入视图,并且它们都有自己的方式来 运行 动画:
- 您的
NavHost
由 activity 托管,而此 activity 是从启动器启动的。启动器通常会覆盖 window 转换以使您的 activity 看起来很好。 - 您的
NavHost
由 activity 托管,而此 activity 由另一个 activity 启动。使用 activity transitions 覆盖默认值。 - 您的
NavHost
嵌套在片段中。包含片段 运行 在进入视图时有自己的过渡。
如您所见,在所有情况下,当 startDestination
片段出现或消失时,都会涉及另一个过渡,因此此处的片段过渡可能会与现有过渡发生冲突,使其看起来令人不快。
同时,如果你真的想把它做成动画,有很多方法。除了问题中提到的,我还能想到这些:
如果您使用的是原生片段,请在应用主题中使用属性更新:它在问题的上下文中没有意义,无论如何都不会起作用。fragmentOpenEnterAnimation
、fragmentOpenExitAnimation
等设置默认片段转换。- 覆盖片段中的
Fragment.onCreateAnimation
或Fragment.onCreateAnimator
方法,并且需要 return 动画/动画师。