Во-первых, вы можете достичь NavigationPageRenderer в Android.
Это GIF демо
![enter image description here](https://i.stack.imgur.com/kStAP.gif)
TransitionNavigationPageRender.cs
[assembly: ExportRenderer(typeof(SwipePageDemo.Controls.TransitionNavigationPage), typeof(TransitionNavigationPageRenderer))]
namespace SwipePageDemo.Droid.Renderers
{
public class TransitionNavigationPageRenderer : NavigationPageRenderer
{
public TransitionNavigationPageRenderer(Context context) : base(context)
{
}
protected override void SetupPageTransition(Android.Support.V4.App.FragmentTransaction transaction, bool isPush)
{
if (isPush)
{
}
else
{
transaction.SetCustomAnimations(Resource.Animation.enter_left, Resource.Animation.exit_right,
Resource.Animation.enter_right, Resource.Animation.exit_left);
}
}
}
}
enter_left.xml
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="enter_from_left"
android:shareInterpolator="false">
<translate
android:fromXDelta="-100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="300"/>
</set>
enter_right.xml
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="300" />
</set>
exit_left.xml
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="0%" android:toXDelta="-100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="300"/>
</set>
exit_right.xml
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="0%" android:toXDelta="100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="300" />
</set>
Если вы хотите узнать больше информации о Page Transition, вы можете обратиться по этой ссылке.
https://github.com/jsuarezruiz/xamarin-forms-page-transitions
Но это работает только с края. Нужно из любого места
Вы можете достичь этого с помощью threshold
свойства SwipeGestureRecognizer
класса
Класс SwipeGestureRecognizer также включает свойство Threshold , которое может быть дополнительно установлено в значение uint, представляющее минимальное расстояние пролистывания, которое должно быть достигнуто для распознавания пролистывания в независимых от устройства единицах. Значение этого свойства по умолчанию равно 100, что означает, что любые свипы, которые меньше 100 независимых от устройства, будут игнорироваться. Если вы хотите увеличить площадь, которую можно провести, вы можете уменьшить эти данные Threshold, как показано в следующем коде.
var leftSwipeGesture = new SwipeGestureRecognizer { Direction = SwipeDirection.Right };
leftSwipeGesture.Threshold = 50;
leftSwipeGesture.Swiped += (sender, e) => Navigation.PopAsync();
stackLayout.GestureRecognizers.Add(leftSwipeGesture);
Я изменил значение leftSwipeGesture. Порог на 50, это GIF удара.
![enter image description here](https://i.stack.imgur.com/xjwFp.gif)