Il Surface Dial è un accessorio che rientra in una nuova categoria, mai vista prima, di prodotti che sfruttano un avanzato sistema di controllo, tramite un collegamento BLE, per interagire con i contenuti delle applicazioni della Universal Windows Platform e permette di scorrere pagine web, modificare il volume, modificare gli strumenti di disegno e molto altro ancora, attraverso l'uso della mano secondaria, un po' come avviene nel caso del mouse. Sebbene sia stato presentato con il Surface Studio, con il quale lavora in perfetta sinergia, Surface Dial è in grado di funzionare in tutte le applicazioni native in Windows 10 a partire dall'Anniversary Update, grazie all'introduzione delle API per i RadialController.
Per aggiungere il supporto al Surface Dial è necessario creare un oggetto RadialController a partire dalla view corrente e, successivamente, lo si può personalizzare aggiungendo tutti i pulsanti e le relative funzionalità di cui l'applicazione necessita:
private void CreateRadialHandler() { var myController = RadialController.CreateForCurrentView(); // creo dei pulsanti personalizzati. var volume = RadialControllerMenuItem.CreateFromKnownIcon("Volume", RadialControllerMenuKnownIcon.Volume); var scroll = RadialControllerMenuItem.CreateFromKnownIcon("Scroll", RadialControllerMenuKnownIcon.Scroll); var zoom = RadialControllerMenuItem.CreateFromFontGlyph("Zoom", "ZoomIn", "SegoeUI"); var undo = RadialControllerMenuItem.CreateFromIcon("Undo", RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Undo.png"))); // aggiungo i pulsanti al menù myController.Menu.Items.Add(volume); myController.Menu.Items.Add(scroll); myController.Menu.Items.Add(zoom); myController.Menu.Items.Add(undo); // registro gli eventi myController.ButtonClicked += MyController_ButtonClicked; myController.RotationChanged += MyController_RotationChanged; }
In questo caso specifico, una volta ottenuto l'oggetto controller, abbiamo aggiunto al menù quattro pulsanti differenti, le cui icone sono state recuperate a partire da risorse note, da glyph e da icone inserite all'interno dell'applicazione stessa. Infine, ci siamo registrati agli eventi relativi al click di un elemento sul menù e alla rotazione del Dial, ma ci si può anche registrare all'evento ScreenContactStarted in caso in cui si vogliano applicare condizioni specifiche in base alla posizione in cui il Dial è stato appoggiato allo schermo. Il risultato finale sarà simile al seguente:
L'utilizzo di queste API richiede la presenza di un device fisico, dato che non è presente un vero e proprio simulatore, ma è possibile installare pacchetti di NuGet, tipo InTheHand.UI.Input.SimulatedRadialController, che sfruttano il mouse per realizzare comportamenti similari e così facendo sarete in grado di testare il codice appena scritto. In ogni caso, rimandiamo alla documentazione tecnica che è molto completa e spiega anche come realizzare scenari specifici: https://docs.microsoft.com/en-us/windows/uwp/design/input/windows-wheel-interactions
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Routing statico e PreRendering in una Blazor Web App
Reactive form tipizzati con FormBuilder in Angular
Limitare le richieste lato server con l'interactive routing di Blazor 8
Generare token per autenicarsi sulle API di GitHub
Reactive form tipizzati con modellazione del FormBuilder in Angular
Cambiare la chiave di partizionamento di Azure Cosmos DB
Evitare il flickering dei componenti nel prerender di Blazor 8
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Effettuare il binding di date in Blazor
Configurare policy CORS in Azure Container Apps
Creare gruppi di client per Event Grid MQTT
Utilizzare i primary constructor in C#
I più letti di oggi
- Aggiungere il metodo SelectMany alla classe Array in TypeScript
- Usare gateway dedicati con Azure Cosmos DB per migliorare le prestazioni
- Recuperare i Popup aperti in una Windows Store app
- AI&ML Conf 2020 - Online
- Preview 4 per ASP.NET MVC
- Speciale Windows Store app: costruire app con WinRT per Windows 8
- Microsoft Security Bulletin MS02-050
- Microsoft Security Bulletin MS04-033
- Attivare l'output caching su ASP.NET Web API
- Ottimizzare l'utilizzo di banda tramite ETag in ASP.NET Core Web API