Пользовательская анимация с MvvmCross Droid
В MvvmCross, если я хочу, чтобы кнопка открывала новый экран, я подключаю обработчик команд и использую ShowViewModel, например так:
ShowViewModel<InfoViewModel>();
Есть ли способ подключить пользовательские анимации, которые сильно зависят от платформы, и все еще использовать ShowViewModel в ядре? Если бы я делал это в проекте Droid, это выглядело бы так:
OverridePendingTransition(Resource.Animation.push_up_in, Resource.Animation.push_up_out);
Так что в основном я хочу подключиться к созданию MvvmCross Activity из проекта Droid.
2 ответа
Решение
Решается вызовом команды из MvxActivity в пользовательском интерфейсе.
var infoBtn = FindViewById<RelativeLayout>(Resource.Id.infobtn);
infoBtn.Click += delegate(object sender, EventArgs args)
{
((MainMenuViewModel)ViewModel).InfoCommand.Execute(null);
OverridePendingTransition(Resource.Animation.push_up_in, Resource.Animation.push_up_out);
};
Наконец-то удалось это сделать!
В настройке переопределить CreateViewPresenter()
public class Setup : MvxAndroidSetup
{
...
...
protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
return new CustomPresenter();
}
}
и создал класс CustomPresenter для анимации:
public class CustomPresenter : MvxAndroidViewPresenter
{
protected override void Show(Intent intent)
{
Activity.StartActivity(intent);
Activity.OverridePendingTransition(Resource.Animator.slide_in_left, Resource.Animator.slide_out_left);
}
}