Top Banner
9 Settembre 2016
33

Xamarin forms

Apr 16, 2017

Download

Technology

Alessio Iafrate
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Xamarin forms

9 Settembre 2016

Page 2: Xamarin forms

9 Settembre 2016

Xamarin FormsAlessio [email protected]@alessioiafrateDotNetAbruzzo

Page 3: Xamarin forms

9 Settembre 2016

Agenda• Perché Xamarin Forms• Il progetto Xamarin Forms• Le pagine• Il layout• I controlli• Gestiamo le differenze tra le piattaforme

Page 4: Xamarin forms

9 Settembre 2016

Perché Xamarin Forms• Consente di condividere non solo la logica, ma anche l’interfaccia utente• Linguaggio basato su XAML: i controlli XAML vengono tradotti in controlli

nativi a runtime• Supporto alle principali caratteristiche di XAML: binding, dependency

property, behavior, trigger, ecc.• Non è lo stesso XAML di Microsoft: molti punti di contatto, ma alcuni controlli

hanno nomi e proprietà differenti

Page 5: Xamarin forms

9 Settembre 2016

Controlli nativi<DatePicker />

Page 6: Xamarin forms

9 Settembre 2016

Condividiamo il codice (Xamarin Nativo)

Portable Class Library o Shared Project

C# Platform Specific

C# Platform Specific

C# Platform Specific

Shared C# App Logic (ViewModels, Models etc)

Page 7: Xamarin forms

9 Settembre 2016

Condividiamo il codice (Xamarin Forms)

Portable Class Library o Shared Project

C# Platform Specific

C# Platform Specific

C# Platform Specific

Shared C# Interface Code (Xamarin.Forms)

Shared C# App Logic (ViewModels, Models etc)

Page 8: Xamarin forms

9 Settembre 2016

Il progetto Xamarin Forms• Una soluzione con 4 progetti:

• Shared• iOS• Android• Windows Phone

• Due approcci per il progetto condiviso:• Shared: file condivisi tra i progetti tramite il meccanismo dei link• Portable: una vera e propria PCL, che produce in output una libreria DLL

• Xamarin Forms viene distribuito come pacchetto NuGet, quindi è importante controllare la presenza di aggiornamenti prima di iniziare un progetto

Page 9: Xamarin forms

9 Settembre 2016

Il punto di partenzaLa classe App è il punto di partenza di un’applicazione Xamarin FormsSi fa carico di definire qual è la pagina iniziale da caricare, grazie alla proprietà MainPageConsente di gestire il ciclo di vita dell’applicazione:

• OnStart() quando l’applicazione viene avviata• OnSleep() quando l’applicazione viene sospesa• OnResume() quando l’applicazione viene riattivata

Page 10: Xamarin forms

9 Settembre 2016

Le pagineLa tipologia più semplice è ContentPage, che rappresenta una pagina con del contenutoUna ContentPage può essere inclusa in una:

• NavigationPage, per aggiungere funzionalità di navigazione• TabbedPage, per suddividere i contenuti in sezioni• CarouselPage, per implementare una gallery• MasterDetailPage, per scenari master - detail

Page 11: Xamarin forms

9 Settembre 2016

Tipi di pagina

Page 12: Xamarin forms

9 Settembre 2016

La navigazioneE’ resa possibile dalla classe Navigation:

• PushAsync() per portare l’utente ad un’altra pagina• PopAsync() per tornare indietro alla pagina precedente

E’ possibile aprire le pagine anche in modalità modale (non supportato su Windows).E’ obbligatorio usare una NavigationPage per sfruttare i metodi di navigazione

Page 13: Xamarin forms

9 Settembre 2016

Definire il layoutDue differenti approcci• Da codice: i controlli vengono istanziati da codice e aggiunti alla proprietà

Content della pagina.• XAML: il layout viene definito utilizzando il linguaggio XAML

Page 14: Xamarin forms

9 Settembre 2016

Layout• Esattamente come nelle Windows Store app, Xamarin Forms offre dei

controlli che servono per definire il layout della pagina• Definiscono la disposizione dei controlli presenti al loro interno

Page 15: Xamarin forms

9 Settembre 2016

StackLayout• Equivale al controllo StackPanel dello XAML Microsoft• Consente di impilare i controlli al suo interno

• Di default, in verticale• Cambiando la proprietà Orientation, in orizzontale

<StackLayout> <Label Text="Text 1" /> <Label Text="Text 2" /> <Label Text="Text 3" /> </StackLayout>

<StackLayout Orientation="Horizontal"> <Label Text="Text 1" /> <Label Text="Text 2" /> <Label Text="Text 3" /> </StackLayout>

Page 16: Xamarin forms

9 Settembre 2016

StackLayout Nativo

Page 17: Xamarin forms

9 Settembre 2016

Grid• Equivale all’omonimo controllo dello XAML Microsoft• Consente di realizzare layout a griglia, formati da righe e colonne<Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Label Grid.Row="0" Grid.Column="0" Text="Item 1" /> <Label Grid.Row="0" Grid.Column="1" Text="Item 2" /> <Label Grid.Row="1" Grid.Column="0" Text="Item 3" /> <Label Grid.Row="1" Grid.Column="1" Text="Item 4" /></Grid>

Page 18: Xamarin forms

9 Settembre 2016

Grid Nativo

Page 19: Xamarin forms

9 Settembre 2016

Altri controlli• AbsoluteLayout: analogo al Canvas dello XAML Microsoft, consente di

posizionare i controlli in modo assoluto, utilizzando le coordinate x e y• RelativeLayout: che permette di posizionare un elemento in maniera relativa

rispetto ad un altro controllo• ScrollView: analogo allo ScrollViewer dello XAML Microsoft, abilita lo scrolling

nel caso in cui i controlli al suo interno occupino uno spazio maggiore dell’altezza dello schermo

Page 20: Xamarin forms

9 Settembre 2016

Controlli per visualizzare contenuti• Label: per visualizzare testi, equivale al controllo TextBlock• Image: per mostrare un’immagine• ListView: per mostrare liste di oggetti• BoxView: per disegnare un’area rettangolare• WebView: per mostrare contenuti HTML

Page 21: Xamarin forms

9 Settembre 2016

Controlli di inserimento dati• Button: per interagire con l’applicazione

• Il contenuto viene impostato con la proprietà Text e l’evento di pressione si chiama Clicked

• DatePicker e TimePicker: per selezionare data e ora.• Entry: per inserire del testo, equivale al controllo TextBox.• Editor: per inserire linee di testo multiple.• Picker: per selezionare un elemento da una lista, equivale al controllo

ListPicker

Page 22: Xamarin forms

9 Settembre 2016

Altri controlli di inserimento• SearchBar: analoga al controllo Entry, ma predisposta per la ricerca• Slider: per inserire un valore lineare, equivale all’omonimo controllo XAML.• Stepper: per inserire un valore intero, all’interno di un range, tramite due

pulsanti + e –• Switch: per gestire lo stato attivo / non attivo, equivale al controllo

ToggleSwitch nello XAML

Page 23: Xamarin forms

9 Settembre 2016

Mostrare lo stato delle operazioni• ActivityIndicator: utilizzato per indicare che è in corso un’operazione

bloccante, equivale al controllo ProgressRing• ProgressBar: utilizzato per indicare che è in corso un’operazione generica,

equivale all’omonimo controllo nello XAML

Page 24: Xamarin forms

9 Settembre 2016

DemoIl progetto

Page 25: Xamarin forms

9 Settembre 2016

Toolbar Nativo• La classe ContentPage espone la proprietà ToolbarItems, che contiene una

serie di controlli ToolbarItem.• Viene mappata:

• Su Windows Phone, con un’application bar• Su iOS e Android, con una toolbar nella barra di navigazione

Page 26: Xamarin forms

9 Settembre 2016

Toolbar Nativo

Page 27: Xamarin forms

9 Settembre 2016

Le mappe• Pacchetto a parte da installare tramite NuGet di nome Xamarin.Forms.Maps• La registrazione del controllo deve essere fatta in maniera differente per le tre

piattaforme• Supporta:

• Pushpin• Geocoding e reverse geocoding• Zoom• Differenti tipi di mappa

Page 28: Xamarin forms

9 Settembre 2016

DemoMappe

Page 29: Xamarin forms

9 Settembre 2016

Gestire le differenze tra le piattaforme• DependencyService

• Si crea un’interfaccia nel progetto condiviso, che espone i metodi comuni tra tutte le piattaforme,si crea poi un’implementazione dell’interfaccia specifica per ogni piattaforma, che utilizza le API di Xamarin

• la classe Device• Permette di distinguere la piattaforma e implementare variazioni nel layout e di

effettuare alcune operazioni cross-platform direttamente nel progetto condiviso

• CustomRenderer• Personalizzare l’aspetto e il comportamento dei controlli in base alla piattaforma• Un controllo base, nel progetto condiviso, da utilizzare nelle pagine XAML• Una classe in ogni progetto specifico, che utilizza le API native della piattaforma

• Inserimento controlli nativi

Page 30: Xamarin forms

9 Settembre 2016

Integrazione con il nativo• Pagine native in Xamarin Forms• Pagine Forms dentro progetti nativi (ad es. per pagine semplici o ripetitive

come login, inserimento dati o registrazione)

Page 31: Xamarin forms

9 Settembre 2016

Nativo vs FormsXamarin.Forms è la scelta migliore per:• Apps di Data entry• Prototipi• Apps che richiedono poche funzionalità specifiche per le varie piattaforme• Apps dove condividere il codice è più importante di una UI personalizzataXamarin Nativo è la scelta migliore:• Apps con un design molto ricercato• Apps che utilizzano molte API specifiche delle varie piattaforme• Apps dove una UI personalizzata è più importante del condividere il codice• App dove è importante avere il massimo delle performance

Page 32: Xamarin forms

9 Settembre 2016

Question time

Page 33: Xamarin forms

9 Settembre 2016

GRAZIE A TUTTI!!!