private async void AndroidPanGestureRecognizer_PanUpdated(object sender, PanUpdatedEventArgs e) { ContentView view = sender as ContentView; switch (e.StatusType) { case GestureStatus.Started: StartPanDownTime = DateTimeOffset.Now; StartY = view.Y; break; case GestureStatus.Running: if (e.TotalY > 0) { Indictor.TranslateTo(0, e.TotalY + StartY, 20, Easing.Linear); PageView.TranslateTo(0, e.TotalY + StartY, 20, Easing.Linear); } break; case GestureStatus.Completed: EndPanDownTime = DateTimeOffset.Now; if (EndPanDownTime.Value.ToUnixTimeMilliseconds() - StartPanDownTime.Value.ToUnixTimeMilliseconds() < SwipeToCloseTime) { await Rg.Plugins.Popup.Services.PopupNavigation.Instance.PopAsync(); } else { PageView.TranslateTo(0, 0, 250, Easing.Linear); Indictor.TranslateTo(0, 0, 250, Easing.Linear); } break; } if (e.StatusType == GestureStatus.Completed || e.StatusType == GestureStatus.Canceled) { StartPanDownTime = null; EndPanDownTime = null; } }