Жесты в Windows Phone

В наборе инструментов Silverlight for Windows Phone Toolkit содержится несколько новых элементов управления (DatePicker, TimePicker, WrapPanel), чья функциональность знакома разработчикам, а также несколько интересных компонентов, специфичных для мобильного телефона: GestureService and GestureListener.

При помощи этих новинок можно реализовать технологию жестов, поддерживаемых сенсорными экранами. Порядок работы следующий:

  • Установите Silverlight for Windows Phone Toolkit (ссылка выше)
  • Добавьте в проекте ссылку на сборку Microsoft.Phone.Controls.Toolkit
  • Добавьте ссылку в XAML-коде вашего UserControl: xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
  • Добавьте экземпляр GestureListener к элементу, который будет распознавать жесты, например, LayoutRoot Grid (см. ниже):
<Grid x:Name="LayoutRoot" Background="Transparent"> 
<toolkit:GestureService.GestureListener> 
<toolkit:GestureListener x:Name="gl" /> 
</toolkit:GestureService.GestureListener> 
.... 
</Grid>

Для простых жестов вы можете обрабатывать события

  • Tap – EventArgs: (point)Origin, (object)OriginalSource
  • DoubleTap – EventArgs: (point)Origin, (object)OriginalSource
  • Flick – EventArgs: (double)Angle, (Orientation)Direction, (double)HorizontalVelocity, (double)VerticalVelocity

Жесты, связанные с ориентацией

  • DragStarted (начало движения) - Для простого движения по экрану в одном направлении (Pan), EventArgs: (Orientation)Direction
  • DragCompleted (окончание движения), вы также можете использовать Velocities для проверки движения по диагонали, EventArgs: (Orientation)Direction, (double) HorizontalVelocity, (double) VerticalVelocity, (double) HorizontalChange, (double) VerticalChange

Для отслеживания позиции движущего пальца

  • Tap – захватываем координаты касания
  • DragStarted – начинаем мониторить для DragDelta
  • DragDelta – изменяемая величина, показывающая разницу между начальной точкой и последней точкой, EventArgs: (Orientation) Direction, (double) HorizontalChange, (double) VerticalChange
  • DragCompleted – проверяем и вычисляем окончательные результаты движения по экрану

Для жестов растягивания или сближения двух точек (двумя пальцами)

  • Tap – захватываем координаты касания
  • PinchStarted – начинаем мониторить PinchDelta, EventArgs: (double) Angle, (double) Distance (между двумя точками)
  • PinchDelta – изменяемая величина, EventArgs: (double) DistanceRatio, (double) TotalAngleDelta
  • PinchCompleted – завершаем слежение. EventArgs: (double) DistanceRatio, (double) TotalAngleDelta

Для касания и удерживания пальца на одном месте

  • Tap – начало мониторинга для Hold
  • Hold – EventArgs: (point)Origin

Ниже приводится картинка для жестов, используемых в Windows Phone 7

Жесты в Windows Phone 7

Источник: Windows Phone 7 Gestures Cheat Sheet

Реклама