Visualizzazione post con etichetta scroll nuova pagina GestureSample. Mostra tutti i post
Visualizzazione post con etichetta scroll nuova pagina GestureSample. Mostra tutti i post

martedì 6 settembre 2011

Gesture in Windows Phone 7


Windows Phone 7 a differenza di altri sistemi operativi mobili non gestisce in maniera nativa le gesture. Esistono diverse possibilità per gestirle per vie esterne. In particolare:

• Un particolare toolkit messo a disposizione dalla Microsoft e dagli sviluppatori di Silverlight (http://silverlight.codeplex.com/)
• Attraverso l’uso delle librerie XNA
Questa seconda possibilità è consigliata in particolare nel caso si vogliano sviluppare giochi. Spieghiamo brevemente come è possibile farlo.





1. Supporto XNA

Fare riferimento al precedente post


2. Toolkit Silverlight

Per prima cosa occorre scaricare l’apposito toolkit al seguente indirizzo web http://silverlight.codeplex.com/ . Una volta installato il plugin aggiungere come reference al proprio progetto l’assembly “Microsoft.Phone.Controls.Toolkit”. Successivamente occorre referenziare l’assembly nell’XAML: namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" Aggiungere un’istanza del GestureListener all’elemento Grid principale della pagina nella quale si vogliono catturare le gesture:


<Grid x:Name="LayoutRoot" Background="Transparent">

   <toolkit:GestureService.GestureListener>


      <toolkit:GestureListener Flick="OnFlick" />

   </toolkit:GestureService.GestureListener>


   ....

</Grid>


Basta poi aggiungere il metodo OnFlick nella classe associata alla pagina:



        private void OnFlick(object sender, FlickGestureEventArgs e)
        {
            if (e.HorizontalVelocity < 0)

this.NavigationService.Navigate(new Uri("/Send_Message.xaml",      UriKind.Relative));
            else
this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        }


In questo caso si sta gestendo l’evento scroll orizzontale. Se l’attributo HorizontalVelocity ha un valore minore di zero indica che lo scroll è da sinistra a destra altrimenti per un valore maggiore di zero indica uno scroll da destra a sinistra.
Gli altri eventi gestibili sono ad esempio il singolo tocco (tap), il doppio tocco (double tap), scroll orizzontale (horizontaldrag), scroll vertical (verticaldrag) e molti altri.

domenica 4 settembre 2011

WP7 : spostarsi da una pagina ad un'altra con scroll orizzontale

Il codice mostrato qui sotto permette di gestire lo scroll orizzontale utilizzandolo per passare da una pagina all'altra della vostra applicazione.

Per prima cosa aggiungiamo al nostro progetto i riferimenti a due librerie:

-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Input.Touch;

il percorso delle due librerie solitamente è già suggerito nell'apposita schermata di inserimento delle referenze.


Poi aggiungiamo il seguente codice nel costruttore della classe:

Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);
TouchPanel.EnabledGestures = GestureType.Tap
| GestureType.DoubleTap
| GestureType.Flick
| GestureType.Pinch
| GestureType.HorizontalDrag
| GestureType.VerticalDrag
| GestureType.PinchComplete
| GestureType.DragComplete
| GestureType.Hold
| GestureType.FreeDrag;


E infine creiamo il metodo per la gestione dell'evento:

void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
if (TouchPanel.IsGestureAvailable)
{
GestureSample gesture = TouchPanel.ReadGesture();


if (gesture.GestureType == GestureType.HorizontalDrag)
{
//next page
}

}
}



Allo stesso modo è possibile gestire anche le altre gesture. Per ulteriori informazioni dare un'occhiata al seguente link