Xamarin AppCompat.NavigationPageRenderer 转换

Xamarin AppCompat.NavigationPageRenderer transitions

我想通过扩展 NavigationPageRenderer 来更改 Android 上页面转换之间的动画。但是,与 Xamarin.Forms.Platform.Android.NavigationRenderer 不同,OnPopToRootAsyncOnPopViewAsync 没有任何方法和 OnPushAsync。是否可以使用 AppCompat.NavigationPageRenderer?

覆盖页面上的过渡

您需要为 NavigationPageRenderer 添加自定义呈现器,并覆盖 SetupPageTransition。

[assembly: ExportRenderer(typeof(NavigationPage), typeof(AnimationNavigationRenderer))]
namespace ProjectName.Droid
{
    public class AnimationNavigationRenderer : Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer
    {
        protected override void SetupPageTransition(Android.Support.V4.App.FragmentTransaction transaction, bool isPush)
        {
            if (isPush)
                transaction.SetCustomAnimations(Resource.Animation.abc_slide_in_top, 0, 0, Resource.Animation.abc_slide_out_top);
            else
                transaction.SetCustomAnimations(Resource.Animation.abc_slide_in_top, 0, 0, Resource.Animation.abc_slide_out_top);
        }
    }
}

对于Android X,可以这样使用:

protected override void SetupPageTransition(AndroidX.Fragment.App.FragmentTransaction transaction, bool isPush)