Hola!
Hoy también escribo un ejemplo sobre cómo utilizar Surface Dial en UWP Apps. En este caso, en una vista que tiene un control Map. El primer escenario a trabajar es simple, controlar el zoom de visualización del map con el spin del Surface Dial. Algo similar a la siguiente animación
Como en el ejemplo anterior, el botón del menú del mapa lo he creado utilizando un char del Font [Segoe MDL2 Assets]. En el evento RotationChanged(), cambio el valor del zoom del mapa utilizando el cambio del spin del Surface Dial
readonly RadialController _controller; | |
public MapPagePage() | |
{ | |
locationService = new LocationService(); | |
Center = new Geopoint(defaultPosition); | |
ZoomLevel = DefaultZoomLevel; | |
InitializeComponent(); | |
_controller = RadialController.CreateForCurrentView(); | |
_controller.RotationResolutionInDegrees = 0.2; | |
_controller.UseAutomaticHapticFeedback = false; | |
var myItem = RadialControllerMenuItem.CreateFromFontGlyph("El Bruno – Maps", "\xE128", "Segoe MDL2 Assets" ); | |
_controller.Menu.Items.Add(myItem); | |
_controller.ButtonClicked += ControllerButtonClicked; | |
_controller.RotationChanged += ControllerRotationChanged; | |
} | |
private void ControllerRotationChanged(RadialController sender, RadialControllerRotationChangedEventArgs args) | |
{ | |
Debug.WriteLine($"{mapControl.ZoomLevel} – {args.RotationDeltaInDegrees}"); | |
mapControl.ZoomLevel = mapControl.ZoomLevel + args.RotationDeltaInDegrees; | |
} |
En la animación podemos ver como en la ventana de Output se ve el cambio del valor del zoom y el delta que se pasa en cada evento. Es importante recordar que si giramos rápidamente el SurfaceDial, no se disparara un evento por cada grado de giro sino un evento donde el valor delta del cambio de giro sea mayor.
En este punto, un detalle importante es el de la línea 11, donde defino que el valor que se pasara en el evento RotationChanged() es de 0.2. Si necesitamos otro tipo de escala, la propiedad RotationResolutionInDegrees es la que nos permitirá cambiar este valor.
Happy Coding!
Source Code en GitHub
Saludos @ Toronto
El Bruno
References
- El Bruno, Controlling a Media Player Element with Surface Dial in a Windows Store App
- El Bruno, Kind of a Hello World with a Surface Dial in a Windows Store App
- Windows Dev Center, Surface Dial Interactions
- Canadian Developer Connection, Developing for Surface Dial
- Visual Studio MarketPlace, Windows Template Studio