in source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Platform/Android/SKTouchHandler.cs [41:110]
private void OnTouch(object? sender, View.TouchEventArgs e)
{
if (onTouchAction == null || scalePixels == null)
return;
var evt = e.Event;
if (evt == null)
return;
var pointer = evt.ActionIndex;
var id = evt.GetPointerId(pointer);
var coords = scalePixels(evt.GetX(pointer), evt.GetY(pointer));
var toolType = evt.GetToolType(pointer);
var deviceType = GetDeviceType(toolType);
var pressure = evt.GetPressure(pointer);
var button = GetButton(evt, toolType);
switch (evt.ActionMasked)
{
case MotionEventActions.Down:
case MotionEventActions.PointerDown:
{
var args = new SKTouchEventArgs(id, SKTouchAction.Pressed, button, deviceType, coords, true, 0, pressure);
onTouchAction(args);
e.Handled = args.Handled;
break;
}
case MotionEventActions.Move:
{
var count = evt.PointerCount;
for (pointer = 0; pointer < count; pointer++)
{
id = evt.GetPointerId(pointer);
coords = scalePixels(evt.GetX(pointer), evt.GetY(pointer));
var args = new SKTouchEventArgs(id, SKTouchAction.Moved, button, deviceType, coords, true, 0, pressure);
onTouchAction(args);
e.Handled = e.Handled || args.Handled;
}
break;
}
case MotionEventActions.Up:
case MotionEventActions.PointerUp:
{
var args = new SKTouchEventArgs(id, SKTouchAction.Released, button, deviceType, coords, false, 0, pressure);
onTouchAction(args);
e.Handled = args.Handled;
break;
}
case MotionEventActions.Cancel:
{
var args = new SKTouchEventArgs(id, SKTouchAction.Cancelled, button, deviceType, coords, false, 0, pressure);
onTouchAction(args);
e.Handled = args.Handled;
break;
}
}
}