Пользовательская анимация с 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);
    }
}
Другие вопросы по тегам