summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/PanGestureHandler.cs
diff options
context:
space:
mode:
authorJason Smith <jason.smith@xamarin.com>2016-03-22 20:02:25 (GMT)
committerJason Smith <jason.smith@xamarin.com>2016-03-22 23:13:41 (GMT)
commit17fdde66d94155fc62a034fa6658995bef6fd6e5 (patch)
treeb5e5073a2a7b15cdbe826faa5c763e270a505729 /Xamarin.Forms.Platform.Android/PanGestureHandler.cs
downloadxamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.zip
xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.gz
xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.bz2
Initial import
Diffstat (limited to 'Xamarin.Forms.Platform.Android/PanGestureHandler.cs')
-rw-r--r--Xamarin.Forms.Platform.Android/PanGestureHandler.cs69
1 files changed, 69 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.Android/PanGestureHandler.cs b/Xamarin.Forms.Platform.Android/PanGestureHandler.cs
new file mode 100644
index 0000000..a552964
--- /dev/null
+++ b/Xamarin.Forms.Platform.Android/PanGestureHandler.cs
@@ -0,0 +1,69 @@
+using System;
+
+namespace Xamarin.Forms.Platform.Android
+{
+ internal class PanGestureHandler
+ {
+ readonly Func<double, double> _pixelTranslation;
+
+ public PanGestureHandler(Func<View> getView, Func<double, double> pixelTranslation)
+ {
+ _pixelTranslation = pixelTranslation;
+ GetView = getView;
+ }
+
+ Func<View> 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<PanGestureRecognizer>(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<PanGestureRecognizer>())
+ {
+ ((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<PanGestureRecognizer>(g => g.TouchPoints == pointerCount))
+ {
+ ((IPanGestureController)panGesture).SendPanStarted(view, Application.Current.PanGestureId);
+ result = true;
+ }
+ return result;
+ }
+ }
+} \ No newline at end of file