Xamarin AppCompat.NavigationPageRenderer 转换
Xamarin AppCompat.NavigationPageRenderer transitions
我想通过扩展 NavigationPageRenderer 来更改 Android 上页面转换之间的动画。但是,与 Xamarin.Forms.Platform.Android.NavigationRenderer 不同,OnPopToRootAsync、OnPopViewAsync 没有任何方法和 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)
我想通过扩展 NavigationPageRenderer 来更改 Android 上页面转换之间的动画。但是,与 Xamarin.Forms.Platform.Android.NavigationRenderer 不同,OnPopToRootAsync、OnPopViewAsync 没有任何方法和 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)