NATIVE/CROSS-PLATFORM UI
XAMARIN
Fabio Cozzolino
Microsoft MVP
@fabiocozzolino
www.fabiocozzolino.eu
Sponsor
Grazie a
Chi sono
• Microsoft Integration MVP dal 2010
• Chief Software Developer in CompuGroup Medical Italia
• DotNetSide – User Group .NET con sede a Bari
Agenda
• Perché Xamarin?
• La piattaforma
• Sviluppare per iOS e Android
• Xamarin.Forms
Scenario: perchè siamo qui?
• iOS e Android la fanno da padrone, Windows Phone
rincorre…
• Per coprire tutto il mercato devo scrivere tre versioni della
stessa app
• Ho bisogno di tre team differenti ognuno competente su
uno specifico OS
• Soluzioni Cross-platform? Web app?
Quindi perché non condividere il
nostro codice c#?
Xamarin Mobile Approach
Native Performance
La piattaforma Xamarin e C#
• Principali caratteristiche
• Generazione di codice nativo
• Platform API Bindings
• Code Sharing
• UI dedicata (*)
• Integrazione con Visual Studio
• Qualsiasi cosa fatta in Objective-C, Swift o Java può essere
fatta in C# con Xamarin e/o con Visual Studio
Cosa serve per sviluppare per iOS
• Su MacOS
• Xamarin Studio
• Xcode
• Su Windows
• Visual Studio
• Xamarin Plugin per Visual Studio
• Un mac che agisce da server di compilazione
• Un account Apple Developer
Cosa serve per sviluppare per Android
• Su Mac/Windows
• Xamarin Studio
• Un account Google Play Developer
• Android SDK
• Xamarin Plugin per Visual Studio
• Genymotion / Xamarin Android Player (preview)
Xamarin First Touch
DEMO
Classic Xamarin Architecture
User Interface
App Layer
Business Layer
Service Access Layer
Data Access Layer
Data Layer
Condividere il codice
• Shared Project
• Costanti di compilazione condizionale
• Partial classes
• PCL (Portable Class Library)
• 1 assembly per più piattaforme
• Supporto completo in Visual Studio 2015
e in Xamarin Studio
• codebase centralizzata
Code sharing technique
DEMO
Xamarin Approach
Shared App
Logic
Native UI
C#
Native UI
C#
Shared C# App Logic Shared C# App Logic
Shared App
Logic
Share
d UI
Code
Androi
d
UI
Code
Windo
ws
UI
Code
in C#
Shared App
Logic
Shared App
Logic
iO
S
UI
Andr
oid
UI
Wind
ows
UI Shared UI
Code
iOS UI
Android
UI
Windows
UI
Shared App Logic
Shared App
Logic
Native UI
C#
Native UI
C#
Native UI
C#
Shared C# App Logic Shared C# App Logic
Shared App
Logic
Share
d UI
Code
Androi
d
UI
Code
Windo
ws
UI
Code
in C#
Shared App
Logic
Shared App
Logic
iO
S
UI
Andr
oid
UI
Wind
ows
UI Shared UI
Code
Model
View and ViewModel
(UI and controller)
Traditional
(80% code reuse)
MVVM con Xamarin.Forms
(99,9% code reuse)
ModelView ViewModel
Xamarin.Forms
Data Binding
Events
Data
Model-View-ViewModel
What is Xamarin.Forms?
• UI condivisa
• 40+ Pages, Layouts, Controls
• Compilazione nativa
• Programmazione (anche) dichiarativa con XAML (standard
2009)
• Two-way Data binding
• Commands
• Converters
• Pieno supporto per le piattaforme recenti (iOS 9.1 e Android
6.0 – Marshmellow)
Cross-platform si, ma…
• Ovviamente non tutto può essere condiviso
• Gestione delle specificità mediante:
• Renderers – creazione di controlli custom o estensione dei controlli
esistenti
• DependencyService – Inversione di controllo per l’implementazione
di classi specifiche
• Classe Device – per l’esecusione di azioni specifiche
WP
Android
iOS
Renderers
• La UI è composta da controlli “platform-indipendent”
• I controlli vengono “tradotti” nei controlli specifici
Label
UILabel
TextView
TextBlock
LabelRenderer
LabelRenderer
LabelRenderer
Dependency Service
• Semplice container IoC per la risoluzione delle istanze
• Basato sull’utilizzo di interfacce
• Interfaccia comune
IDatabase
• Implementazione specifica
iOSDatabase, AndroidDatabase
• Registro la dipendenza
[assembly: Dependency(typeof(iOSDatabase)]
• Utilizzo l’istanza nel progetto condiviso
DependencyService.Get<IDatabase>
Classe Device
Label.FontSize = Device.OnPlatform(
24,
Device.GetNamedSize(NamedSize.Medium, label),
Device.GetNamedSize(NamedSize.Large, label)
);
<BoxView HorizontalOptions="Center">
<BoxView.Color>
<OnPlatform x:TypeArguments="Color"
iOS="Green"
Android="#738182"
WinPhone="Accent" />
</BoxView.Color>
<BoxView.WidthRequest>
<OnPlatform x:TypeArguments="x:Double"
iOS="30"
Android="40"
WinPhone="50" />
</BoxView.WidthRequest>
</BoxView>
Cosa posso fare con Xamarin.Forms?
• Navigation
• Animation API
• Messaging Center
• Custom Controls
• Gesture Recognizers
• Xamarin.Forms.Maps
• Triggers and Behaviors (1.3.0+)
Xamarin.Forms
DEMO
Windows Apps with Xamarin Forms
• Disponibile in preview con Xamarin.Forms 1.4.2
• Include anche il supporto per Windows Phone 8.1
• Richiede alcuni interventi “manuali”
• Limitazioni rilevanti
• Nessun supporto alle mappe
• No Grid View control
• No Embedded Resource da assembly esterni
• Device.OnPlatform non ancora supportato
The Xamarin World
Aggiornamenti
• Xamarin.iOS e Xamarin.Android vengono costantemente
aggiornati
• Le nuove versioni vengono rilasciate entro le 24/48 ore successive
ai rilasci degli SDK
• Supportato dai maggiori vendors: Telerik, Infragistics, etc..
• Utilizzato da Microsof, HP, Cisco, Accenture, Novartis, AT&T,
etc...
What’s next
• Partnership Microsoft – Xamarin più forte
• Xamarin templates inclusi in Visual Studio
• Quando create il primo progetto Android o iOS viene avviato il
download di Xamarin Starter Edition
• Al momento è necessaria una licenza business per compilare e
debuggare iOS
Riferimenti
• Contattatemi
• @fabiocozzolino
• www.fabiocozzolino.eu
• Xamarin
• @xamarinhq
• http://www.xamarin.com
• Sviluppatori Xamarin Italia
• https://www.facebook.com/groups/sviluppatorixamarinitalia/
Domande?
Xamarin

More Related Content

PPTX
Sviluppo apps multipiattaforma con visual studio e xamarin
PPTX
Xamarin Robotics
PPTX
Costruire app per WinPhone, iOS e Android con C# e Xamarin
PPTX
Writing apps for android with .net
PPTX
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
PPTX
Sviluppo di app cross platform con xamarin e C#
PPTX
Community Days 2015 Introduzione a Xamarin
PPTX
INTRO TO XAMARIN
Sviluppo apps multipiattaforma con visual studio e xamarin
Xamarin Robotics
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Writing apps for android with .net
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Sviluppo di app cross platform con xamarin e C#
Community Days 2015 Introduzione a Xamarin
INTRO TO XAMARIN

What's hot (20)

PPTX
Introduction to Xamarin
PPTX
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
PPTX
Xamarin.Forms Introduction
PDF
Xamarin & Cognitive Services Slides
PPTX
Introduzione Xamarin
PPTX
Introduction to iOS development with Xamarin
PPTX
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
PPTX
Mobile development .net
PPTX
C# Mobile application architecture
PPTX
Introduzione a Xamarin
PPTX
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
PDF
Spa with Blazor
PPTX
Sviluppo di App cross-platform con Cordova e HTML5
KEY
Flash Platform su dispositivi mobili
PPTX
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
PPTX
Intro xamarin forms
DOCX
Xamarin Form - A sample app
PDF
Nativo vs Xamarin pro e contro
PPTX
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
PPTX
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Introduction to Xamarin
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin.Forms Introduction
Xamarin & Cognitive Services Slides
Introduzione Xamarin
Introduction to iOS development with Xamarin
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Mobile development .net
C# Mobile application architecture
Introduzione a Xamarin
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Spa with Blazor
Sviluppo di App cross-platform con Cordova e HTML5
Flash Platform su dispositivi mobili
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Intro xamarin forms
Xamarin Form - A sample app
Nativo vs Xamarin pro e contro
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Ad

Viewers also liked (20)

PPTX
Xamarin Forms
PPTX
近 似值
PDF
Sakenomyの開発経緯と内容をできるだけ公開しちゃいます
PDF
Xamarinの歩き方
PPTX
Introduction to xamarin
PPT
Sosiaalinen Media 23022010
PPTX
Notify your Windows Store app with Service Bus Notification Hub
PPT
Podcasting Presentation Elearning April 2008
PDF
KVSRO GUWAHATI 2011-2012 NEWSLETTER
PPT
CloudValley
PPT
Demostraciones
PDF
Innovative experiences of Open Educational Resources towards academic knowled...
PPS
Eportfolio Presentation
PPT
Pxgt6110 Task1
PPTX
ePortoflios for lifelong learning
PPT
Produkte Werbung
DOC
Martinez german r
PPT
Brazil Or Not...
PPTX
Online Collaboration In Learning Emergency Services
Xamarin Forms
近 似值
Sakenomyの開発経緯と内容をできるだけ公開しちゃいます
Xamarinの歩き方
Introduction to xamarin
Sosiaalinen Media 23022010
Notify your Windows Store app with Service Bus Notification Hub
Podcasting Presentation Elearning April 2008
KVSRO GUWAHATI 2011-2012 NEWSLETTER
CloudValley
Demostraciones
Innovative experiences of Open Educational Resources towards academic knowled...
Eportfolio Presentation
Pxgt6110 Task1
ePortoflios for lifelong learning
Produkte Werbung
Martinez german r
Brazil Or Not...
Online Collaboration In Learning Emergency Services
Ad

Similar to Xamarin (20)

PPTX
Xamarin forms
PDF
Nativo vs Xamarin: pro e contro
PPTX
Smau Napoli 2016 - Michele Aponte, Microsoft
PPTX
Unofficial Xamarin Day DomusDotNet
PDF
Google IO Catania - 20/05/2016
PPTX
Universal app ma universal per davvero
PPTX
App mobile cross-platform con Xamarin
PDF
MonoTouch, un anno dopo
PPTX
Sviluppo di applicazioni mobile cross platform
PPTX
Sviluppare app per iOS e Android con Xamarin e Visual Studio
PPTX
Xamarin.android
PDF
MVVM Cross &lt;3 Xamarin
PPTX
Real Solutions Day - Cross-Platform con Xamarin
PPTX
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
PPTX
XeDotNet - .Net MAUI
ODP
Mobile platforms development overview
PDF
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
PPTX
Android vs iOS
PPTX
Xaml su Xamarin
PDF
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin forms
Nativo vs Xamarin: pro e contro
Smau Napoli 2016 - Michele Aponte, Microsoft
Unofficial Xamarin Day DomusDotNet
Google IO Catania - 20/05/2016
Universal app ma universal per davvero
App mobile cross-platform con Xamarin
MonoTouch, un anno dopo
Sviluppo di applicazioni mobile cross platform
Sviluppare app per iOS e Android con Xamarin e Visual Studio
Xamarin.android
MVVM Cross &lt;3 Xamarin
Real Solutions Day - Cross-Platform con Xamarin
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
XeDotNet - .Net MAUI
Mobile platforms development overview
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Android vs iOS
Xaml su Xamarin
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...

Xamarin

  • 1. NATIVE/CROSS-PLATFORM UI XAMARIN Fabio Cozzolino Microsoft MVP @fabiocozzolino www.fabiocozzolino.eu
  • 3. Chi sono • Microsoft Integration MVP dal 2010 • Chief Software Developer in CompuGroup Medical Italia • DotNetSide – User Group .NET con sede a Bari
  • 4. Agenda • Perché Xamarin? • La piattaforma • Sviluppare per iOS e Android • Xamarin.Forms
  • 5. Scenario: perchè siamo qui? • iOS e Android la fanno da padrone, Windows Phone rincorre… • Per coprire tutto il mercato devo scrivere tre versioni della stessa app • Ho bisogno di tre team differenti ognuno competente su uno specifico OS • Soluzioni Cross-platform? Web app?
  • 6. Quindi perché non condividere il nostro codice c#?
  • 9. La piattaforma Xamarin e C# • Principali caratteristiche • Generazione di codice nativo • Platform API Bindings • Code Sharing • UI dedicata (*) • Integrazione con Visual Studio • Qualsiasi cosa fatta in Objective-C, Swift o Java può essere fatta in C# con Xamarin e/o con Visual Studio
  • 10. Cosa serve per sviluppare per iOS • Su MacOS • Xamarin Studio • Xcode • Su Windows • Visual Studio • Xamarin Plugin per Visual Studio • Un mac che agisce da server di compilazione • Un account Apple Developer
  • 11. Cosa serve per sviluppare per Android • Su Mac/Windows • Xamarin Studio • Un account Google Play Developer • Android SDK • Xamarin Plugin per Visual Studio • Genymotion / Xamarin Android Player (preview)
  • 13. Classic Xamarin Architecture User Interface App Layer Business Layer Service Access Layer Data Access Layer Data Layer
  • 14. Condividere il codice • Shared Project • Costanti di compilazione condizionale • Partial classes • PCL (Portable Class Library) • 1 assembly per più piattaforme • Supporto completo in Visual Studio 2015 e in Xamarin Studio • codebase centralizzata
  • 16. Xamarin Approach Shared App Logic Native UI C# Native UI C# Shared C# App Logic Shared C# App Logic Shared App Logic Share d UI Code Androi d UI Code Windo ws UI Code in C# Shared App Logic Shared App Logic iO S UI Andr oid UI Wind ows UI Shared UI Code iOS UI Android UI Windows UI Shared App Logic Shared App Logic Native UI C# Native UI C# Native UI C# Shared C# App Logic Shared C# App Logic Shared App Logic Share d UI Code Androi d UI Code Windo ws UI Code in C# Shared App Logic Shared App Logic iO S UI Andr oid UI Wind ows UI Shared UI Code Model View and ViewModel (UI and controller) Traditional (80% code reuse) MVVM con Xamarin.Forms (99,9% code reuse)
  • 18. What is Xamarin.Forms? • UI condivisa • 40+ Pages, Layouts, Controls • Compilazione nativa • Programmazione (anche) dichiarativa con XAML (standard 2009) • Two-way Data binding • Commands • Converters • Pieno supporto per le piattaforme recenti (iOS 9.1 e Android 6.0 – Marshmellow)
  • 19. Cross-platform si, ma… • Ovviamente non tutto può essere condiviso • Gestione delle specificità mediante: • Renderers – creazione di controlli custom o estensione dei controlli esistenti • DependencyService – Inversione di controllo per l’implementazione di classi specifiche • Classe Device – per l’esecusione di azioni specifiche
  • 20. WP Android iOS Renderers • La UI è composta da controlli “platform-indipendent” • I controlli vengono “tradotti” nei controlli specifici Label UILabel TextView TextBlock LabelRenderer LabelRenderer LabelRenderer
  • 21. Dependency Service • Semplice container IoC per la risoluzione delle istanze • Basato sull’utilizzo di interfacce • Interfaccia comune IDatabase • Implementazione specifica iOSDatabase, AndroidDatabase • Registro la dipendenza [assembly: Dependency(typeof(iOSDatabase)] • Utilizzo l’istanza nel progetto condiviso DependencyService.Get<IDatabase>
  • 22. Classe Device Label.FontSize = Device.OnPlatform( 24, Device.GetNamedSize(NamedSize.Medium, label), Device.GetNamedSize(NamedSize.Large, label) ); <BoxView HorizontalOptions="Center"> <BoxView.Color> <OnPlatform x:TypeArguments="Color" iOS="Green" Android="#738182" WinPhone="Accent" /> </BoxView.Color> <BoxView.WidthRequest> <OnPlatform x:TypeArguments="x:Double" iOS="30" Android="40" WinPhone="50" /> </BoxView.WidthRequest> </BoxView>
  • 23. Cosa posso fare con Xamarin.Forms? • Navigation • Animation API • Messaging Center • Custom Controls • Gesture Recognizers • Xamarin.Forms.Maps • Triggers and Behaviors (1.3.0+)
  • 25. Windows Apps with Xamarin Forms • Disponibile in preview con Xamarin.Forms 1.4.2 • Include anche il supporto per Windows Phone 8.1 • Richiede alcuni interventi “manuali” • Limitazioni rilevanti • Nessun supporto alle mappe • No Grid View control • No Embedded Resource da assembly esterni • Device.OnPlatform non ancora supportato
  • 27. Aggiornamenti • Xamarin.iOS e Xamarin.Android vengono costantemente aggiornati • Le nuove versioni vengono rilasciate entro le 24/48 ore successive ai rilasci degli SDK • Supportato dai maggiori vendors: Telerik, Infragistics, etc.. • Utilizzato da Microsof, HP, Cisco, Accenture, Novartis, AT&T, etc...
  • 28. What’s next • Partnership Microsoft – Xamarin più forte • Xamarin templates inclusi in Visual Studio • Quando create il primo progetto Android o iOS viene avviato il download di Xamarin Starter Edition • Al momento è necessaria una licenza business per compilare e debuggare iOS
  • 29. Riferimenti • Contattatemi • @fabiocozzolino • www.fabiocozzolino.eu • Xamarin • @xamarinhq • http://www.xamarin.com • Sviluppatori Xamarin Italia • https://www.facebook.com/groups/sviluppatorixamarinitalia/

Editor's Notes

  • #18: -Updating view / viewmodel based on changes -Xamarin.Forms adds support for this -seamless communication between the two
  • #27: Xamarin Platform Un framework cross-platform per lo sviluppo di applicazioni mobile in C# Un ambiente di sviluppo Xamarin Studio Xamarin plug-in per Visual Studio Ma c’è di più Xamarin UITest, Test Cloud, Insights, University