blob: a552964cc1edb142164a12e82876fbe61f2e69b3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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;
}
}
}
|