MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
-
Upload
dan-ardelean -
Category
Technology
-
view
1.374 -
download
4
Transcript of MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCrossda Windows Phone a
Windows 8 passando per Android e iOS
Dan ARDELEANTwitter: @danardeleanEmail: [email protected]
Smartphones
Source: Gartner (April 2012)
Operating System
1Q12 Units
1Q12 Market
Share (%)
1Q11 Units
1Q11 Market
Share (%)
Android 81,067.4 56.1 36,350.1 36.4
iOS 33,120.5 22.9 16,883.2 16.9
Symbian 12,466.9 8.6 27,598.5 27.7
Research In Motion 9,939.3
6.913,004.0
13.0
Bada 3,842.2 2.7 1,862.2 1.9
Microsoft 2,712.5 1.9 2,582.1 2.6
Altri 1,242.9 0.9 1,495.0 1.5
Totale 144,391.7 100.0 99,775.0 100.0Source: Gartner (Maggio 2012)
Tablet
Source: Gartner (Aprile 2012)
OS 2011 2012 2013 2016iOS 39.998 72.988 99.553 169.652
Android 17.292 37.878 61.684 137.657
Microsoft 0 4.863 14.547 43.648
QNX 807 2.643 6.036 17.836
Altri 1,919 510 637 464
Totale 60.017 118.883 182.457 369.258
Agenda
• C# per sviluppo mobile cross-platform
• Introduzione a MVVM e MVVMCross
• TwitterSearch
• Sqlite cross-platform
• Domande
C# per sviluppo mobile cross-platform
• Usando C# si può sviluppare per: Windows Phone, Windows 8, Android e iOS
• Possibilità di sfruttare features come: generics, linq, anonymous methods, async
• Possibilità di riutilizzare il codice
• Costi per lo sviluppo e la manutenzione del codice sorgenti più contenuti
Cosa serve – Windows Phone
• Windows 7
• Visual Studio 2010 Express or Ultimate
• Account AppHub 99$
• Telefono
Cosa serve – Windows 8
• PC con Windows 8 RP
• Visual Studio 2012 RC
• Fare i lab di Win8
Cosa serve – Android• Windows o Mac
• MonoDevelop o Visual Studio
• Mono for Android 399$
• Play account 25$
Cosa serve – iOS• Mac
• MonoDevelop e XCode
• Mono for iOS 399$
• iOS account 99$
• MacIncloud http://www.macincloud.com
MVVM
Vie
w
Vie
wM
odel
Model
get/set proprietàcommandi
notifichemessaggi
Qualsiasi codice C#!
Vie
wV
iew
Vie
wM
odel
Vie
wM
odel
Model
Model
Implementare MVVM
• Properties• INotifyPropertyChanged• INotifyCollectionChanged• Data Binding• IValueConverter• ICommand• UI Thread
Vantaggi MVVM
• Separazione tra BL e UI
• Più facile da testare
• MVVMCross riutilizzo codice cross-platform
MVVMCross
MVVMCross
Vie
w
Vie
wM
odel
Model
Codice condivisoCodice
Specifico
get/set proprietàcommandi
notifichemessaggi
Qualsiasi codice C#!
Vie
wV
iew
Vie
wM
odel
Vie
wM
odel
Model
Model
Stuart Lodge (https://github.com/slodge/MvvmCross)
TwitterSearch
Model & Service
HomeViewModel
TwitterViewModel
Windows Phone 7
• Niente C#, solo XAML con {Binding}• Binding syntax includes:• {Binding Path, Converter=Converter,
ConverterParameter=Parameter, Mode=Mode, FallbackValue=Fallback}
Android
• Niente C#, solo xml con attributi MvxBind
• La sintassi MvxBind è JSON con struttura XAML.
Xaml vs MvxBind
WP7:
Text=“{Binding SearchText,Mode=TwoWay}”
Android:
local:MvxBind=“{‘Text’:{‘Path’:’SearchText’,’Mode’:’TwoWay’}
}”
Xaml vs MvxBindWP7:
Text=“{Binding Timestamp,Converter={StaticResource
TimeAgo}}”
Android:
local:MvxBind=“{‘Text’:{‘Path’:’Timestamp’,Converter’:’TimeAgo’}}”
iPhone App• UI in XML usando Xcode• XIB collegato alle classe C# usando
MonoTouch• Binding nel codice C# usando JSON
iPad• L’applicazione iPad è la stessa
applicazione usando iPhone App – “Universal”
• La UI sfrutta lo schermo più grande.• Impostazioni usando: IMvxTouchViewPresenter
Windows 8
Windows 8 Binding
Simile a Windows Phone 7….• Niente C#, solo XAML con {Binding}
• Usa ValueConverters per i Bindings• Per le leste binding su ItemsSource
• Però: La navigazione si fa tramite codice e non tramite Uri Xaml
Sqlite cross-platform
Windows Phone WinRT iOS Android
csharp-sqlite Sqlite x WinRT Dentro l’OS
sqlite-net
Data layer
Business logic
Sqlite cross-platform
• Sqlite per WinRT x86 e x64• http://www.sqlite.org/download.html
• sqlite-net https://github.com/praeclarum/sqlite-net
• csharp-sqlite http://code.google.com/p/csharp-sqlite/
XAMARIN COUPON
-15%https://store.xamarin.com/?discount=wprefresh
-fino a fine Luglio-
Domande?