Код, который обрабатывает транзакцию фрагмента, представляет собой метод Show
из действия, реализующего IMvxFragmentHost
, который отвечает за обработку определенного фрагмента. Чтобы изменить анимацию, вам необходимо использовать метод SetCustomAnimations
при отображении фрагмента.
Что я обычно делаю, это создать класс BaseFragmentView
, который включает и оставляет анимацию открытой как свойства. При отображении фрагментов, можно просто использовать эти свойства, как это:
var transaction = SupportFragmentManager
.BeginTransaction()
.SetCustomAnimations(fragmentView.EnterAnimation, fragmentView.ExitAnimation)
.Replace(targetId, fragmentView)
.Commit();
При использовании MvxChachingFragmentView
, вы можете просто переопределить метод OnBeforeFragmentChanging
и использовать второй параметр, чтобы добавить пользовательские анимации вы хотите.
Вы можете увидеть, как реализовать интерфейс IMvxFragmentHost
путем проверки MvxCachingFragmentView
класс и, если вы не знаете, как использовать новые фрагменты из MvvmCross 4 см this answer
Но это не означало бы, что я потерять возможность навигации через ShowViewModel в виртуальной машине до фрагмента? – NPadrutt
Отрицательный. Под капотом, когда вы вызываете ShowViewModel, он в конечном итоге получает вызов Presenter, который в случае отображения фрагментов получает вызов метода Show в зарегистрированном IMvxFragmentHost. Это то, как он уже обрабатывается, вы просто немного измените его в соответствии со своими потребностями :) –
Но я не могу использовать MvxCachingFragmentView? Насколько я могу судить, я не могу просто переопределить ShowMethod и добавить свою анимацию перехода. – NPadrutt