SlideShare una empresa de Scribd logo
1 de 77
Creare app native su
iOS, Android, Mac &
Windows in C#
Introduzione a Xamarin.Forms
Gli speaker di oggi
Guido Magrin
Xamarin & Microsoft Student Partner
Xamarin Certified Developer
@GuidoMagrin
Dove trovo le slide?
http://www.slideshare.net/guidomagrin
Gli Xamarin Student Partner
https://www.facebook.com/XSAMilano
Oggi parleremo di…
Xamarin.Forms
Cosa impareremo oggi?
• Cos’è Xamarin.Forms
• La prima app Xamarin.Forms
• Pagine
• Layouts
• Controlli e navigazione
• Extra
Chi ha già
sentito parlare di
Xamarin.Forms?
Xamarin + Xamarin.Forms
Approccio offerto da Xamarin.Forms:
Codice UI condiviso, controlli nativi
Approccio tradizionale di Xamarin
Shared UI Code
Il progetto Xamarin.Forms
Una soluzione con 4 progetti:
– Shared
– iOS 6.1+
– Android 4.0+
– Windows Phone 8.x – Windows 10 (in arrivo)
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
Attenzione!
Xamarin.Forms viene distribuito come pacchetto NuGet,
per questo è importante controllare la presenza di aggiornamenti
prima di iniziare un progetto
Costruzione della User Interface
Due 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
XAML Previewer per Xamarin Forms
• Richiede la versione 2.3 del
package di Xamarin.Forms
• Consente esclusivamente di
“vedere”, non di modificare
• Disponibile per iOS/Android
Microsoft XAML vs Xamarin.Forms
Xamarin.Forms è conforme alle specifiche di XAML 2009
Microsoft XAML vs Xamarin.Forms
Descrivere una schermata tramite XAML
La prima app
Xamarin.Forms
Domanda 1
Xamarin.Forms usa controlli nativi su ogni piattaforma per renderizzare
l’interfaccia grafica
a) Vero
b) Falso
Domanda 1
Xamarin.Forms usa controlli nativi su ogni piattaforma per renderizzare
l’interfaccia grafica
a) Vero
b) Falso
Domanda 2
Se voglio realizzare un’app per iPhone e iPad curata pixel per pixel,
Xamarin.Forms è la scelta migliore per il mio progetto
a) Vero
b) Falso
Domanda 2
Se voglio realizzare un’app per iPhone e iPad curata pixel per pixel,
Xamarin.Forms è la scelta migliore per il mio progetto
a) Vero
b) Falso
Domanda 3
Xamarin.Forms è la scelta ideale per realizzare prototipi o app con
pochi elementi grafici, che non richiedono una grafica personalizzata
a) Vero
b) Falso
Domanda 3
Xamarin.Forms è la scelta ideale per realizzare prototipi o app con
pochi elementi grafici, che non richiedono una grafica personalizzata
a) Vero
b) Falso
La prima app
Xamarin.Forms
DEMO
La prima app
Xamarin.Forms
Domanda 1
Xamarin.Forms crea un singolo file binario che può essere distribuito ed
eseguito indifferentemente su Android, iOS e Windows Phone
a) Vero
b) Falso
Domanda 1
Xamarin.Forms crea un singolo file binario che può essere distribuito ed
eseguito indifferentemente su Android, iOS e Windows Phone
a) Vero
b) Falso
Domanda 2
Per impostare la pagina di avvio di un’app Xamarin.Forms, che
proprietà della classe App bisogna impostare?
a) Application.FirstPage
b) Application.PrimaryPage
c) Application.MainPage
d) Application.MainView
Domanda 2
Per impostare la pagina di avvio di un’app Xamarin.Forms, che
proprietà della classe App bisogna impostare?
a) Application.FirstPage
b) Application.PrimaryPage
c) Application.MainPage
d) Application.MainView
Le pagine
• La tipologia più semplice è la ContentPage, che rappresenta una
pagina con del contenuto
• Una ContentPage può essere inclusa in una:
– MasterDetailPage
– NavigationPage
– TabbedPage, per suddividere i contenuti in sezioni
– CarouselPage, per implementare una gallery
Pagine
Le pagine
Contiene controlli e
componenti visuali
Content
Le pagine
Content MasterDetail
Gestisce due pagine
di informazioni
Le pagine
Content MasterDetail Navigation
Gestisce uno stack di
navigazione
Le pagine
Content MasterDetail Navigation Tabbed
Pagina che naviga
attraverso più tab
Le pagine
Content MasterDetail Navigation Tabbed Carousel
Pagina che consente
di navigare i contenuti
tramite swipe
Esempio di TabbedPage
Due differenti ContentPage
Pagine
DEMO
Layouts
Il 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
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>
StackLayout
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>
Grid
Altri controlli per il layout
• AbsoluteLayout: analogo al Canvas dello XAML Microsoft,
consente di posizionare i controlli in modo assoluto, utilizzando le
coordinate x e y
• 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
Layouts
DEMO
La prima app
Xamarin.Forms
Domanda 1
La direzione (dall’alto verso il basso – da sinsitra verso destra) degli
elementi contenuti in uno StackLayout, da che proprietà è controllata?
a) Style
b) Direction
c) Orientation
d) LayoutDirection
Domanda 1
La direzione (dall’alto verso il basso – da sinsitra verso destra) degli
elementi contenuti in uno StackLayout, da che proprietà è controllata?
a) Style
b) Direction
c) Orientation
d) LayoutDirection
Domanda 2
Per regolare la distanza tra i contenuti di uno StackLayout, che
proprietà dobbiamo utilizzare?
a) Margin
b) Padding
c) Spacing
Domanda 2
Per regolare la distanza tra i contenuti di uno StackLayout, che
proprietà dobbiamo utilizzare?
a) Margin
b) Padding
c) Spacing
Controlli e
navigazione
I controlli di Xamarin.Forms
ActivityIndicator BoxView Button DatePicker Editor
Entry Image Label ListView Map
OpenGLView Picker ProgressBar SearchBar Slider
Stepper TableView TimePicker WebView EntryCell
ImageCell SwitchCell TextCell ViewCell
Visualizzare contenuti
• Label: per visualizzare testi, equivale al controllo TextBlock
• Image: per mostrare un’immagine
• ImageCell: per mostrare un’immagine con un testo
• ListView: per mostrare liste di oggetti
• BoxView: per disegnare un’area rettangolare
• WebView: per mostrare contenuti HTML
Ricevere input dall’utente
• 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
Ricevere input dall’utente
• 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
Le mappe
• Pacchetto a parte da installare tramite NuGet di nome
Xamarin.Forms.Maps
• Supporta:
– Pushpin
– Geocoding e reverse geocoding
– Zoom
– Differenti tipi di mappa
Toolbar Items
• 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
<ContentPage.ToolbarItems>
<ToolbarItem Text="Impostazioni" Order=“Primary" Clicked="Settings_OnClicked"/>
<ToolbarItem Text="Info su" Order="Secondary" Clicked="About_OnClicked"/>
</ContentPage.ToolbarItems>
Toolbar Items
La navigazione tra pagine
• E’ 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 Phone).
• Su iOS e Android è obbligatorio usare una NavigationPage per
sfruttare i metodi di navigazione
Controlli e
navigazione
DEMO
La prima app
Xamarin.Forms
Domanda 1
Quale dei seguenti controlli non è disponibile in Xamarin.Forms?
a) Button
b) DatePicker
c) ListBox
d) ListView
Domanda 1
Quale dei seguenti controlli non è disponibile in Xamarin.Forms?
a) Button
b) DatePicker
c) ListBox
d) ListView
Domanda 2
Da quali metodi della classe Navigation è resa possibile la
navigazione?
a) MoveAsync()
b) PushAsync()
c) PopAsync()
d) NavigateAsync()
Domanda 2
Da quali metodi della classe Navigation è resa possibile la
navigazione?
a) MoveAsync()
b) PushAsync()
c) PopAsync()
d) NavigateAsync()
Domanda 3
Se voglio mostrare del testo nella mia app, il controllo migliore messo a
disposizione da Xamarin.Forms è
a) Label
b) Entry
c) BoxView
d) Editor
Domanda 3
Se voglio mostrare del testo nella mia app, il controllo migliore messo a
disposizione da Xamarin.Forms è
a) Label
b) Entry
c) BoxView
d) Editor
Extra
Abilitare XAMLC
XAMLC (il compilatore XAML) è disabilitato di default per assicurare la
retrocompatibilità del codice scritto. Può essere abilitato tramite un attributo .NET
Cos’è una Risorsa?
Una risorsa è un oggetto che può essere usato più volte all’interno della nostra UI
Creare una Risorsa (locale)
Ogni pagina può contenere un dictionary, a sua volta in grado di contenere varie
risorse.
Creare una Risorsa (centralizzata)
La Risorsa può essere anche gestita in maniera centralizzata, in maniera da
essere disponibile per tutte le pagine del nostro progetto
Usare una Risorsa
StaticResource serve a recuperare una risorsa, ma il valore è applicato solo
quando l’oggetto è creato
Cos’è uno Stile?
Uno stile è una collezione di setters per un particolare tipo di view
Usare uno Stile
Gli stili sono impostati tramite l’utilizzo della proprietà Style
Dove posso imparare di più?
https://developer.xamarin.com/guides/xamarin-forms/creating-mobile-apps-xamarin-forms/
Libro gratuito completo
su Xamarin.Forms,
diviso in 27 capitoli.
Disponibile in PDF, ePub e Mobi
Grazie per l’attenzione 
Guido Magrin
Xamarin Student Partner
@GuidoMagrin

Más contenido relacionado

La actualidad más candente

Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controCarmelo Ruota
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione XamarinAndrea Tosato
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoGabriele Gaggi
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETStefano Ottaviani
 
SQLite in Xamarin.Forms
SQLite in Xamarin.FormsSQLite in Xamarin.Forms
SQLite in Xamarin.FormsGuido Magrin
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Gabriele Gaggi
 
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal ServicesDrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal ServicesMichel Morelli
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesXamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesFrancesco Bonacci
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile PowerappsGiuneco S.r.l
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailStefano Ottaviani
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioGiuneco S.r.l
 
Notifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele CoppolaNotifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele CoppolaGiuneco S.r.l
 

La actualidad más candente (20)

Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Xamarin
XamarinXamarin
Xamarin
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
 
Xamarin Robotics
Xamarin RoboticsXamarin Robotics
Xamarin Robotics
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
SQLite in Xamarin.Forms
SQLite in Xamarin.FormsSQLite in Xamarin.Forms
SQLite in Xamarin.Forms
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Introduzione a Xamarin
Introduzione a XamarinIntroduzione a Xamarin
Introduzione a Xamarin
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal ServicesDrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesXamarin & Cognitive Services Slides
Xamarin & Cognitive Services Slides
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile Powerapps
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
 
Notifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele CoppolaNotifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele Coppola
 

Destacado

Xamarin.iOS introduction
Xamarin.iOS introductionXamarin.iOS introduction
Xamarin.iOS introductionGuido Magrin
 
Enel Smart Info presentation
Enel Smart Info presentationEnel Smart Info presentation
Enel Smart Info presentationGuido Magrin
 
LGL Team - UniShare & UniBuy
LGL Team -  UniShare & UniBuyLGL Team -  UniShare & UniBuy
LGL Team - UniShare & UniBuyGuido Magrin
 
Xamarin.Android Introduction
Xamarin.Android IntroductionXamarin.Android Introduction
Xamarin.Android IntroductionGuido Magrin
 
10 strumenti «tecnologici»
10 strumenti «tecnologici»10 strumenti «tecnologici»
10 strumenti «tecnologici»Viola Anesin
 
2 applicazioni per questionari
2 applicazioni  per questionari2 applicazioni  per questionari
2 applicazioni per questionariLaura Antichi
 
Matematica il dominio
Matematica il dominioMatematica il dominio
Matematica il dominiotofana
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davveroKlab
 
Presentazione Finale Corso DidaApp
Presentazione Finale Corso DidaAppPresentazione Finale Corso DidaApp
Presentazione Finale Corso DidaAppLaura Antichi
 
Tutorial su Kahoot
Tutorial su KahootTutorial su Kahoot
Tutorial su KahootLuciana Cino
 
Tutorial su Socrative
Tutorial su SocrativeTutorial su Socrative
Tutorial su SocrativeLuciana Cino
 
SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...
SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...
SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...guest12aaa586
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Xamarin
 

Destacado (16)

Xamarin.iOS introduction
Xamarin.iOS introductionXamarin.iOS introduction
Xamarin.iOS introduction
 
Enel Smart Info presentation
Enel Smart Info presentationEnel Smart Info presentation
Enel Smart Info presentation
 
LGL Team - UniShare & UniBuy
LGL Team -  UniShare & UniBuyLGL Team -  UniShare & UniBuy
LGL Team - UniShare & UniBuy
 
Xamarin.Android Introduction
Xamarin.Android IntroductionXamarin.Android Introduction
Xamarin.Android Introduction
 
Socrative
SocrativeSocrative
Socrative
 
Ppt socrative
Ppt socrativePpt socrative
Ppt socrative
 
10 strumenti «tecnologici»
10 strumenti «tecnologici»10 strumenti «tecnologici»
10 strumenti «tecnologici»
 
2 applicazioni per questionari
2 applicazioni  per questionari2 applicazioni  per questionari
2 applicazioni per questionari
 
Matematica il dominio
Matematica il dominioMatematica il dominio
Matematica il dominio
 
Socrative e gli S.R.S.
Socrative e gli S.R.S.Socrative e gli S.R.S.
Socrative e gli S.R.S.
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davvero
 
Presentazione Finale Corso DidaApp
Presentazione Finale Corso DidaAppPresentazione Finale Corso DidaApp
Presentazione Finale Corso DidaApp
 
Tutorial su Kahoot
Tutorial su KahootTutorial su Kahoot
Tutorial su Kahoot
 
Tutorial su Socrative
Tutorial su SocrativeTutorial su Socrative
Tutorial su Socrative
 
SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...
SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...
SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017
 

Similar a Xamarin.Forms Introduction

Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...DrupalDay
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
ios 8 - parte 2 - todo-app - ita
ios 8 - parte 2 - todo-app - itaios 8 - parte 2 - todo-app - ita
ios 8 - parte 2 - todo-app - itaDario Rusignuolo
 
Mob03 what's new in windows phone
Mob03   what's new in windows phoneMob03   what's new in windows phone
Mob03 what's new in windows phoneDotNetCampus
 
Applicazioni mobile integrate a TYPO3
Applicazioni mobile integrate a TYPO3Applicazioni mobile integrate a TYPO3
Applicazioni mobile integrate a TYPO3Luca Peressini
 
Mob04 best practices for windows phone ui design
Mob04   best practices for windows phone ui designMob04   best practices for windows phone ui design
Mob04 best practices for windows phone ui designDotNetCampus
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Codemotion
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Todi Appy Days
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
 
Slide generazione automatica di siti con mappe geografiche
Slide   generazione automatica di siti con mappe geograficheSlide   generazione automatica di siti con mappe geografiche
Slide generazione automatica di siti con mappe geograficheMartino Miani
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...Marco Milesi
 

Similar a Xamarin.Forms Introduction (20)

Xamarin forms
Xamarin formsXamarin forms
Xamarin forms
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
ios 8 - parte 2 - todo-app - ita
ios 8 - parte 2 - todo-app - itaios 8 - parte 2 - todo-app - ita
ios 8 - parte 2 - todo-app - ita
 
Mob03 what's new in windows phone
Mob03   what's new in windows phoneMob03   what's new in windows phone
Mob03 what's new in windows phone
 
Applicazioni mobile integrate a TYPO3
Applicazioni mobile integrate a TYPO3Applicazioni mobile integrate a TYPO3
Applicazioni mobile integrate a TYPO3
 
Mob04 best practices for windows phone ui design
Mob04   best practices for windows phone ui designMob04   best practices for windows phone ui design
Mob04 best practices for windows phone ui design
 
Xpages, cosa ci sarà in questa nuova tecnologia
Xpages, cosa ci sarà in questa nuova tecnologiaXpages, cosa ci sarà in questa nuova tecnologia
Xpages, cosa ci sarà in questa nuova tecnologia
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple Watch
 
Slide generazione automatica di siti con mappe geografiche
Slide   generazione automatica di siti con mappe geograficheSlide   generazione automatica di siti con mappe geografiche
Slide generazione automatica di siti con mappe geografiche
 
Mobile UI Design
Mobile UI DesignMobile UI Design
Mobile UI Design
 
#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)
 
Dojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web DominoDojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web Domino
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
WordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWAWordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWA
 
Esempi pratici
Esempi praticiEsempi pratici
Esempi pratici
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
 

Xamarin.Forms Introduction

  • 1. Creare app native su iOS, Android, Mac & Windows in C# Introduzione a Xamarin.Forms
  • 2. Gli speaker di oggi Guido Magrin Xamarin & Microsoft Student Partner Xamarin Certified Developer @GuidoMagrin
  • 3. Dove trovo le slide? http://www.slideshare.net/guidomagrin
  • 4. Gli Xamarin Student Partner https://www.facebook.com/XSAMilano
  • 6. Cosa impareremo oggi? • Cos’è Xamarin.Forms • La prima app Xamarin.Forms • Pagine • Layouts • Controlli e navigazione • Extra
  • 7. Chi ha già sentito parlare di Xamarin.Forms?
  • 8. Xamarin + Xamarin.Forms Approccio offerto da Xamarin.Forms: Codice UI condiviso, controlli nativi Approccio tradizionale di Xamarin Shared UI Code
  • 9. Il progetto Xamarin.Forms Una soluzione con 4 progetti: – Shared – iOS 6.1+ – Android 4.0+ – Windows Phone 8.x – Windows 10 (in arrivo) 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
  • 10. Attenzione! Xamarin.Forms viene distribuito come pacchetto NuGet, per questo è importante controllare la presenza di aggiornamenti prima di iniziare un progetto
  • 11. Costruzione della User Interface Due 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
  • 12. XAML Previewer per Xamarin Forms • Richiede la versione 2.3 del package di Xamarin.Forms • Consente esclusivamente di “vedere”, non di modificare • Disponibile per iOS/Android
  • 13. Microsoft XAML vs Xamarin.Forms Xamarin.Forms è conforme alle specifiche di XAML 2009
  • 14. Microsoft XAML vs Xamarin.Forms
  • 15. Descrivere una schermata tramite XAML
  • 17. Domanda 1 Xamarin.Forms usa controlli nativi su ogni piattaforma per renderizzare l’interfaccia grafica a) Vero b) Falso
  • 18. Domanda 1 Xamarin.Forms usa controlli nativi su ogni piattaforma per renderizzare l’interfaccia grafica a) Vero b) Falso
  • 19. Domanda 2 Se voglio realizzare un’app per iPhone e iPad curata pixel per pixel, Xamarin.Forms è la scelta migliore per il mio progetto a) Vero b) Falso
  • 20. Domanda 2 Se voglio realizzare un’app per iPhone e iPad curata pixel per pixel, Xamarin.Forms è la scelta migliore per il mio progetto a) Vero b) Falso
  • 21. Domanda 3 Xamarin.Forms è la scelta ideale per realizzare prototipi o app con pochi elementi grafici, che non richiedono una grafica personalizzata a) Vero b) Falso
  • 22. Domanda 3 Xamarin.Forms è la scelta ideale per realizzare prototipi o app con pochi elementi grafici, che non richiedono una grafica personalizzata a) Vero b) Falso
  • 25. Domanda 1 Xamarin.Forms crea un singolo file binario che può essere distribuito ed eseguito indifferentemente su Android, iOS e Windows Phone a) Vero b) Falso
  • 26. Domanda 1 Xamarin.Forms crea un singolo file binario che può essere distribuito ed eseguito indifferentemente su Android, iOS e Windows Phone a) Vero b) Falso
  • 27. Domanda 2 Per impostare la pagina di avvio di un’app Xamarin.Forms, che proprietà della classe App bisogna impostare? a) Application.FirstPage b) Application.PrimaryPage c) Application.MainPage d) Application.MainView
  • 28. Domanda 2 Per impostare la pagina di avvio di un’app Xamarin.Forms, che proprietà della classe App bisogna impostare? a) Application.FirstPage b) Application.PrimaryPage c) Application.MainPage d) Application.MainView
  • 29. Le pagine • La tipologia più semplice è la ContentPage, che rappresenta una pagina con del contenuto • Una ContentPage può essere inclusa in una: – MasterDetailPage – NavigationPage – TabbedPage, per suddividere i contenuti in sezioni – CarouselPage, per implementare una gallery
  • 31. Le pagine Contiene controlli e componenti visuali Content
  • 32. Le pagine Content MasterDetail Gestisce due pagine di informazioni
  • 33. Le pagine Content MasterDetail Navigation Gestisce uno stack di navigazione
  • 34. Le pagine Content MasterDetail Navigation Tabbed Pagina che naviga attraverso più tab
  • 35. Le pagine Content MasterDetail Navigation Tabbed Carousel Pagina che consente di navigare i contenuti tramite swipe
  • 36. Esempio di TabbedPage Due differenti ContentPage
  • 39. Il 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
  • 40. 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>
  • 42. 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>
  • 43. Grid
  • 44. Altri controlli per il layout • AbsoluteLayout: analogo al Canvas dello XAML Microsoft, consente di posizionare i controlli in modo assoluto, utilizzando le coordinate x e y • 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
  • 47. Domanda 1 La direzione (dall’alto verso il basso – da sinsitra verso destra) degli elementi contenuti in uno StackLayout, da che proprietà è controllata? a) Style b) Direction c) Orientation d) LayoutDirection
  • 48. Domanda 1 La direzione (dall’alto verso il basso – da sinsitra verso destra) degli elementi contenuti in uno StackLayout, da che proprietà è controllata? a) Style b) Direction c) Orientation d) LayoutDirection
  • 49. Domanda 2 Per regolare la distanza tra i contenuti di uno StackLayout, che proprietà dobbiamo utilizzare? a) Margin b) Padding c) Spacing
  • 50. Domanda 2 Per regolare la distanza tra i contenuti di uno StackLayout, che proprietà dobbiamo utilizzare? a) Margin b) Padding c) Spacing
  • 52. I controlli di Xamarin.Forms ActivityIndicator BoxView Button DatePicker Editor Entry Image Label ListView Map OpenGLView Picker ProgressBar SearchBar Slider Stepper TableView TimePicker WebView EntryCell ImageCell SwitchCell TextCell ViewCell
  • 53. Visualizzare contenuti • Label: per visualizzare testi, equivale al controllo TextBlock • Image: per mostrare un’immagine • ImageCell: per mostrare un’immagine con un testo • ListView: per mostrare liste di oggetti • BoxView: per disegnare un’area rettangolare • WebView: per mostrare contenuti HTML
  • 54. Ricevere input dall’utente • 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
  • 55. Ricevere input dall’utente • 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
  • 56. Le mappe • Pacchetto a parte da installare tramite NuGet di nome Xamarin.Forms.Maps • Supporta: – Pushpin – Geocoding e reverse geocoding – Zoom – Differenti tipi di mappa
  • 57. Toolbar Items • 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 <ContentPage.ToolbarItems> <ToolbarItem Text="Impostazioni" Order=“Primary" Clicked="Settings_OnClicked"/> <ToolbarItem Text="Info su" Order="Secondary" Clicked="About_OnClicked"/> </ContentPage.ToolbarItems>
  • 59. La navigazione tra pagine • E’ 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 Phone). • Su iOS e Android è obbligatorio usare una NavigationPage per sfruttare i metodi di navigazione
  • 62. Domanda 1 Quale dei seguenti controlli non è disponibile in Xamarin.Forms? a) Button b) DatePicker c) ListBox d) ListView
  • 63. Domanda 1 Quale dei seguenti controlli non è disponibile in Xamarin.Forms? a) Button b) DatePicker c) ListBox d) ListView
  • 64. Domanda 2 Da quali metodi della classe Navigation è resa possibile la navigazione? a) MoveAsync() b) PushAsync() c) PopAsync() d) NavigateAsync()
  • 65. Domanda 2 Da quali metodi della classe Navigation è resa possibile la navigazione? a) MoveAsync() b) PushAsync() c) PopAsync() d) NavigateAsync()
  • 66. Domanda 3 Se voglio mostrare del testo nella mia app, il controllo migliore messo a disposizione da Xamarin.Forms è a) Label b) Entry c) BoxView d) Editor
  • 67. Domanda 3 Se voglio mostrare del testo nella mia app, il controllo migliore messo a disposizione da Xamarin.Forms è a) Label b) Entry c) BoxView d) Editor
  • 68. Extra
  • 69. Abilitare XAMLC XAMLC (il compilatore XAML) è disabilitato di default per assicurare la retrocompatibilità del codice scritto. Può essere abilitato tramite un attributo .NET
  • 70. Cos’è una Risorsa? Una risorsa è un oggetto che può essere usato più volte all’interno della nostra UI
  • 71. Creare una Risorsa (locale) Ogni pagina può contenere un dictionary, a sua volta in grado di contenere varie risorse.
  • 72. Creare una Risorsa (centralizzata) La Risorsa può essere anche gestita in maniera centralizzata, in maniera da essere disponibile per tutte le pagine del nostro progetto
  • 73. Usare una Risorsa StaticResource serve a recuperare una risorsa, ma il valore è applicato solo quando l’oggetto è creato
  • 74. Cos’è uno Stile? Uno stile è una collezione di setters per un particolare tipo di view
  • 75. Usare uno Stile Gli stili sono impostati tramite l’utilizzo della proprietà Style
  • 76. Dove posso imparare di più? https://developer.xamarin.com/guides/xamarin-forms/creating-mobile-apps-xamarin-forms/ Libro gratuito completo su Xamarin.Forms, diviso in 27 capitoli. Disponibile in PDF, ePub e Mobi
  • 77. Grazie per l’attenzione  Guido Magrin Xamarin Student Partner @GuidoMagrin

Notas del editor

  1. We see here the Xamarin approach we talked about earlier This enables you to be highly productive, share code, but build out UI on each platform and access platform APIs With Xamarin.Forms you now have a nice Shared UI Code layer, but still access to platform APIs You can start from native, pick a few screens, or start with forms, and replace with native later
  2. Xamarin Introduction!
  3. Xamarin Introduction!
  4. Xamarin Introduction!
  5. Xamarin Introduction!
  6. Xamarin Introduction!
  7. Xamarin Introduction!
  8. PushModalAsync non ti crea una NavigationPage di base. se quindi fai: dichiaro page2; Push(page2); Push(new page) Non funziona, invece dichiaro page2; Push(page2); PushModal(new page) fa una pagina a sè Modal è da usare come gestione di una navigazione a sè NavigationPage per creare un vero Stack in cui navigare tra pagine quindi il Push e Pop classici funzionano SOLO se chiamati da una NavigationPage
  9. Xamarin Introduction!
  10. Xamarin Introduction!
  11. Xamarin Introduction!