为片段添加事务转换



当我使用 ShowViewModel 导航到活动时,它的动画效果很好。但是当目标是Fragment时,它就不会。有没有办法也添加这个?

我看到在本机 android 中,您会将其添加到FragmentTransaction 中,但由于MvvmCross为我们处理它,我认为还有另一个地方可以处理它。

处理片段事务的代码是活动实现IMvxFragmentHost中的Show方法,负责处理正在显示的特定片段。为了更改动画,您需要在显示片段时使用SetCustomAnimations方法。

我通常做的是创建一个BaseFragmentView类,该类将进入和离开动画作为属性公开。显示片段时,我可以简单地使用这些属性,如下所示:

var transaction = SupportFragmentManager
                   .BeginTransaction()
                   .SetCustomAnimations(fragmentView.EnterAnimation, fragmentView.ExitAnimation)
                   .Replace(targetId, fragmentView)
                   .Commit();

使用 MvxChachingFragmentView 时,只需重写 OnBeforeFragmentChanging 方法并使用第二个参数添加所需的自定义动画即可。

您可以通过检查 MvxCachingFragmentView 类来了解如何实现 IMvxFragmentHost 接口,如果您不知道如何使用 MvvmCross 4 中的新片段,请参阅此答案

最新更新