当我使用 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 中的新片段,请参阅此答案