Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Interfacce Utente su Xamarin.Forms

I principali componenti per la definizione dell'interfaccia utente di un'app mobile, utilizzando i costrutti di base di Xamarin.Forms: gli oggetti Page.
I principali componenti per la definizione dell'interfaccia utente di un'app mobile, utilizzando i costrutti di base di Xamarin.Forms: gli oggetti Page.
Link copiato negli appunti

In questa lezione vedremo come comporre un’interfaccia utente (o User Interface, UI) con Xamarin.Forms, focalizzandoci sugli elementi di tipo Page.

Elementi di una schermata

Lo scopo principale di Xamarin.Forms è quello di unificare non solo la logica dell’app tra le varie piattaforme mobili, ma anche la UI. Per fare ciò, Xamarin.Forms fornisce un insieme di elementi e contenitori che compongono la grafica delle app.

Figura 36. Schema degli elementi che compongono l'interfaccia su Xamarin.Forms (click per ingrandire)

Schema degli elementi che compongono l'interfaccia su Xamarin.Forms

È possibile suddividere la UI in tre classi:

Campo Descrizione
Page Ogni schermata dell’app contiente solo ed esclusivamente una Page, cioè un contenitore al cui interno è possibile definire Layout e View
Layout È un contenitore che permette di definire e gestire al suo interno altri contenitori e elementi/controlli di tipo View, che permetteranno all’utente di interagire con l’app
View Con questa classe di elementi ci si riferisce a oggetti dell’interfaccia come bottoni, etichette e riquadri per l’inserimento del testo

Analizziamo nel dettaglio la classe di oggetti Page e cerchiamo di comprenderne le principali caratteristiche.

La classe Page

La classe Page è la classe basilare per la definizione di molteplici tipi di dati derivati e permette di definire un contenitore che occupa buona parte se non tutta la schermata, offrendo la possibilità allo sviluppatore di definire al suo interno altri elementi figli. La classe Page di Xamarin.Forms rappresenta a tutti gli effetti una Page di Windows Phone o un ViewController di iOS, sebbene non può però essere completamente paragonata ad un’Activity di Android. Nonostante entrambe occupino l’intera schermata del dispositivo, il comportamento assunto è differente, come è stato possibile percepire dall’analisi del ciclo di vita dell’app.

La classe si compone di diverse proprietà fondamentali che ne permettono l’utilizzo e che sono ereditate dalle classi che la estendono, come ad esempio la ContentPage. Di seguito le proprietà principali:

Proprietà Descrizione
BackgroundImage È una stringa che identifica l’immagine di sfondo della pagina
Icon È un oggetto di tipo FileImageSource e viene usato come icona della pagina
Padding Indica lo spazio tra la pagina corrente e il suo bordo
Title È una stringa impostata come titolo della pagina
ToolbarItems Questa proprietà rappresenta un insieme di oggetti contenuti in una barra degli strumenti (Toolbar) o in una Page

Oltre a queste proprietà, la classe Page offre diversi metodi (protetti e privati) che permettono di gestire e personalizzare il comportamento della pagina. Di interesse sono:

Metodo Descrizione
OnAppearing() Se sovrascritto, permette di definire il comportamento dell’app quando quella Page sta per essere visualizzata dall’utente
OnBackButtonPressed() È un metodo che può essere sovrascritto e permette di definire il comportamento del bottone "back". Un esempio è il classico alert che viene visualizzato quando si esce dall’app
OnDisappearing() Una volta sovrascritto questo metodo, siamo in grado di personalizzare il comportamento dell’app quando la Page sta per scomparire
DisplayAlert(String, String, String) È utile per mostrare all’utente degli avvisi a seguito di determinate azioni impostando il testo per il titolo, il contenuto e il bottone

L’uso di questi metodi permette di modificare il comportamento della Page sulla base delle nostre esigenze. La classe Page permette la definizione di diverse categorie di pagine, come mostrato nella figura seguente, ognuna delle quali offre la possibilità di gestire uno specifico comportamento.

Figura 37. Gli elementi di una Page possono essere organizzati in diverse modalità (fonte: xamarin.com) (click per ingrandire)

Gli elementi di una Page possono essere organizzati in diverse modalità

Si riporta di seguito una breve descrizione di ognuna delle tipologie:

Tipo Descrizione
ContentPage È una delle pagine fondamentali di Xamarin e si basa sulla classe TampletedPage. Mostra una singola schermata che definisce un contenitore di tipo Layout in cui definire un elemento di tipo View
MasterDetailPage Offre la possibilità di gestire due pannelli (pane). ll master pane contiene un elenco di risorse a cui è associato un detail pane che mostra informazioni dettagliate
NavigationPage Gestisce la navigazione e lo stack delle pagine che l’utente può visualizzare
TabbedPage È una pagina che mostra un set di tab sulla parte superiore dello schermo, cliccando sulle quali è possibile visualizzare una specifica schermata. Per farlo si estende la classe Multipage<T>
TemplatedPage Mostra il contenuto di una pagina a pieno schermo ed è alla base delle ContentPage
CarouselPage Offre la possibilità di definire tante pagine di tipo ContentPage che possono essere navigate attraverso lo swipe. Come per la TabbedPage, anche questa estende la classe Multipage<T>. La CarouselPage sarà deprecata nelle future versioni di Xamarin a favore della CarouselView, come riportato sul forum ufficiale

Aggiungere una nuova Page

Per aggiungere una nuova Page alla nostra soluzione, basterà cliccare sul progetto HelloXamarin (portatile) ed usare la combinazione di tasti CTRL+MAISC+A aprendo la schermata per aggiungere un nuovo elemento. Cliccando su CrossPlatform, abbiamo la possibilità di scegliere tra tre opzioni per aggiungere una Page o View. In particolare:

Forms ContentPage Crea una nuova pagina di tipo ContentPage che può essere definita tramite C#
Forms ContentView Permette la creazione di una ContentView basata sulla classe TemplatedView che estende la classe Layout. Quindi, non permette di definire una pagina ma il contenuto
Forms Xaml Page Crea una nuova pagina usando lo XAML per definire i suoi contenuti. Di base crea una pagina di tipo ContentPage
Figura 38. Aggiunta di una nuova Page su Visual Studio (click per ingrandire)

Aggiunta di una nuova Page su Visual Studio

La scelta, quindi, dipende da quale approccio è per noi più pratico per definire una pagina, nonchè dalla sua complessità. Creiamo, ad esempio, una nuova Forms ContentPage e chiamiamola ContentPageXample. Per impostarla come prima pagina dell’app, nel file App.cs basterà cambiare la proprietà MainPage come segue:

MainPage = new ContentPageXample();

oppure:

MainPage = new NavigationPage(new ContentPageXample());

La seconda opzione è la scelta da preferire, poiché la NavigationPage offre una migliore gestione della navigazione. A questo punto lanciamo l’app su tutti e tre i dispositivi, ottenendo come risultato quello mostrato nella figura seguente:

Figura 39. Anteprima della Page appena realizzata (click per ingrandire)

Anteprima della Page appena realizzata

Infine, se desideriamo cambiare il tipo di pagina con una TabbedPage, basterà modificare l’estensione della classe come segue:

class NomePagina : TabbedPage

Fatto ciò non resta che modificarne il contenuto in accordo con le nostre esigenze.

Ti consigliamo anche