我知道如何在导航图中的action
标签中添加Enter和退出动画。我也知道如何在使用navController
导航时使用NavOptions
动态添加动画。
我想知道如何在导航图中添加StartDestination
的Enter Animation。我可以以拖曳方式进行:
- 将动画应用于开始目标的根视图
- 使用将用原始目的地片段代替的临时起始目标片段。
- 将动画应用于
NavHostFragment
的容器(FrameLayout
(并动态添加主机
但我想知道是否有任何官方解决方案为此目的。
谢谢
没有官方方法来动画 startDestination
fragment,我相信您通常不应该对其进行动画。您的startDestination
片段有几种方式,并且它们都有自己的操作动画的方式:
- 您的
NavHost
由一项活动托管,此活动是从启动器启动的。发射器通常会覆盖窗口过渡,以使您的活动出现得很好。 - 您的
NavHost
由一项活动托管,此活动由另一个活动启动。使用活动过渡来覆盖默认情况。 - 您的
NavHost
嵌套在片段中。包含的片段在视图时运行自己的过渡。
在所有情况下,当startDestination
片段出现或消失时都涉及其他过渡,因此这里的片段过渡可能会与现有的过渡相撞,从而使其看起来不愉快。
同时,如果您真的想为它做动画,则有很多方法。除了在问题中提到的外,我还可以考虑以下内容:
-
如果您使用的是本机片段,请在应用程序主题中设置属性更新:在问题的上下文中,这是没有意义的,无论如何都不会工作。fragmentOpenEnterAnimation
,fragmentOpenExitAnimation
等。 - 覆盖
Fragment.onCreateAnimation
或您的片段中的Fragment.onCreateAnimator
方法和返回动画/动画仪。