using System; namespace Xamarin.Forms.Platform.Android { internal class PanGestureHandler { readonly Func _pixelTranslation; public PanGestureHandler(Func getView, Func pixelTranslation) { _pixelTranslation = pixelTranslation; GetView = getView; } Func GetView { get; } public bool OnPan(float x, float y, int pointerCount) { View view = GetView(); if (view == null) return false; var result = false; foreach (PanGestureRecognizer panGesture in view.GestureRecognizers.GetGesturesFor(g => g.TouchPoints == pointerCount)) { ((IPanGestureController)panGesture).SendPan(view, _pixelTranslation(x), _pixelTranslation(y), Application.Current.PanGestureId); result = true; } return result; } public bool OnPanComplete() { View view = GetView(); if (view == null) return false; var result = false; foreach (PanGestureRecognizer panGesture in view.GestureRecognizers.GetGesturesFor()) { ((IPanGestureController)panGesture).SendPanCompleted(view, Application.Current.PanGestureId); result = true; } Application.Current.PanGestureId++; return result; } public bool OnPanStarted(int pointerCount) { View view = GetView(); if (view == null) return false; var result = false; foreach (PanGestureRecognizer panGesture in view.GestureRecognizers.GetGesturesFor(g => g.TouchPoints == pointerCount)) { ((IPanGestureController)panGesture).SendPanStarted(view, Application.Current.PanGestureId); result = true; } return result; } } }