Template designed by
What's new in Windows Phone
Matteo Pagani
info@qmatteoq.com - @qmatteoq
http://www.qmatteoq.com
Templ...
brought to you by
Software Engineer @ Funambol
Microsoft MVP – Windows Phone Development
Nokia Developer Champion
Autore dei libri «Sviluppa...
Universal app
Cosa cambia per lo sviluppatore?
• La gestione del layout
• I nuovi controlli XAML
• La navigazione
• La ges...
Windows Developer Platform in 8.1
| |
Legend
Convergenza delle API
6
Il Windows Runtime (WinRT) è la
piattaforma che consente di condividere il
runtime e le API usate ...
• Due applicazioni separate per le due piattaforme
• Un progetto comune, che permette di condividere:
• Codice
• Controlli...
demo
Universal app
Il layout
La gestione del layout – WP 8.0
1.0x 1.6x 1.5x 2.25x
480x800 480x800 480x853 480x853
La gestione del layout – WP 8.1
7”
6”
5”
4.5”
canvas virtualmente infinito
Limiti superiori di X, Y vengono
calcolati a se...
La gestione del layout – WP 8.1
12:38
larghezza
altezza
“raw” pixels
12:38
larghezza
altezza
“view” pixels
diviso per il
f...
Stessa dimensione, diverse risoluzioni
12:38
540
960 5.5”
12:38
5.5”
720
1280
12:38
5.5”
1080
1920
450
800
“view” pixels
Stessa risoluzione, diverse dimensioni
12:38
4.7”
1080
1920
“view” pixels 368x686
12:38
5.5”
1080
1920
450x800
12:38
6”
10...
• In alcuni scenari (ad esempio, un gioco) non è possibile
mostrare più contenuto
• Il controllo ViewBox consente di appli...
demo
Gestire il layout
I controlli
Convergenza dei controlli
80% XAML condiviso 20% personalizzato
Common SignatureOptimized
DatePicker
TimePicker
CommandBar...
• Il controllo Panorama è stato sostituito dal
controllo Hub
• E’ composto da HubSection per definire le
varie sezioni
• P...
<Hub>
<HubSection Header="Prima sezione">
<DataTemplate>
<Image Source="/Assets/small-logo.jpg" />
</DataTemplate>
</HubSe...
Il controllo ApplicationBar è stato sostituito dal controllo
CommandBar
ApplicationBar
<Page.BottomAppBar>
<CommandBar x:N...
Il controllo CommandBar
Windows Phone
Windows
• E’ stato sostituito dai controlli GridView e ListView
• Il controllo GridView è ottimizzato per una visualizzazione a
gr...
ListView e GridView
Semantic Zoom
<SemanticZoom>
<SemanticZoom.ZoomedInView>
<!-- ListView or GridView -->
<!-- ItemsSource binds to
Collectio...
demo
ListView e GridView
E’ stata sostituita dal controllo StatusBar e non può essere
gestito dallo XAML
StatusBar
StatusBar
StatusBar
StatusBar
St...
I flyout sostituiscono i controlli ContextMenu e ListPicker
Flyout
<Button Content="Show Menu Flyout" Margin="20, 20, 100, 20">
<Button.Flyout>
<MenuFlyout>
<MenuFlyoutItem Text="Option 1" ...
<Button>
<Button.Flyout>
<ListPickerFlyout x:Name="ListPickerFlyout"
ItemsSource="{Binding Path=Comics}">
<ListPickerFlyou...
La navigazione
Il nuovo approccio
Window
Frame
Page
Window
• Si usa il metodo Navigate() della classe Frame
• E’ richiesto il tipo della pagina e non l’url
• Ora è supportato il pas...
• La classe Frame sostituisce il NavigationService
• BackStack per accedere allo stack delle pagine
• GoBack() per tornare...
Gestire lo stato della pagina
NavigationCacheMode.Disabled
NavigationCacheMode.Enabled Required
Page 1 Page 2 Page 3
new n...
• Nuovo comportamento predefinito per allinearsi a Windows
8: il pulsante Back porta all’applicazione precedente
• Tutti i...
Esempio di gestione del pulsante Back
E tanto altro ancora
Attenzione!
• Alcune feature non sono ancora supportate dal Windows
Runtime
• Non esiste un processo di conversione automatico da un
p...
• Migliori performance e minor consumo di memoria
• Possibilità di condividere la maggior parte del codice con
Windows 8 e...
• Molte librerie hanno già una versione compatibile con il
Windows Runtime (Caliburn Micro, MVVM Light, JSON.NET,
ecc.)
• ...
Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per c...
Upcoming SlideShare
Loading in …5
×

Mob03 what's new in windows phone

297 views
233 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
297
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Mob03 what's new in windows phone

  1. 1. Template designed by What's new in Windows Phone Matteo Pagani info@qmatteoq.com - @qmatteoq http://www.qmatteoq.com Template designed by
  2. 2. brought to you by
  3. 3. Software Engineer @ Funambol Microsoft MVP – Windows Phone Development Nokia Developer Champion Autore dei libri «Sviluppare applicazioni per Windows Phone 8» e «Windows Phone 8 Development Succinctly» Membro della community DotNetLombardia e fondatore di WPDev Fusion chi sono
  4. 4. Universal app Cosa cambia per lo sviluppatore? • La gestione del layout • I nuovi controlli XAML • La navigazione • La gestione dello storage Quale percorso? agenda
  5. 5. Windows Developer Platform in 8.1 | | Legend
  6. 6. Convergenza delle API 6 Il Windows Runtime (WinRT) è la piattaforma che consente di condividere il runtime e le API usate dalle Store app (telefono e tablet / pc) Convergenza quasi totale in 8.1 • L’obiettivo è la convergenza al 100% per gli scenari di sviluppo • 8.0 aveva circa il 30% di API convergenti • 8.1 ha più del 90% di API convergenti
  7. 7. • Due applicazioni separate per le due piattaforme • Un progetto comune, che permette di condividere: • Codice • Controlli XAML • Asset grafici • Template basato sul meccanismo dei linked files: i file è come se fossero presenti in entrambi i progetti, ma fisicamente sono memorizzati in una sola posizione Welcome Universal Windows app
  8. 8. demo Universal app
  9. 9. Il layout
  10. 10. La gestione del layout – WP 8.0 1.0x 1.6x 1.5x 2.25x 480x800 480x800 480x853 480x853
  11. 11. La gestione del layout – WP 8.1 7” 6” 5” 4.5” canvas virtualmente infinito Limiti superiori di X, Y vengono calcolati a seconda del dispositivo utilizzando • dimensione del display • risoluzione dello schermo Funziona sia per i device attuali che per quelli futuri Stesso approccio di Windows 8.1 y
  12. 12. La gestione del layout – WP 8.1 12:38 larghezza altezza “raw” pixels 12:38 larghezza altezza “view” pixels diviso per il fattore di scala
  13. 13. Stessa dimensione, diverse risoluzioni 12:38 540 960 5.5” 12:38 5.5” 720 1280 12:38 5.5” 1080 1920 450 800 “view” pixels
  14. 14. Stessa risoluzione, diverse dimensioni 12:38 4.7” 1080 1920 “view” pixels 368x686 12:38 5.5” 1080 1920 450x800 12:38 6” 1080 1920 491x873
  15. 15. • In alcuni scenari (ad esempio, un gioco) non è possibile mostrare più contenuto • Il controllo ViewBox consente di applicare il vecchio approccio di 8.0 • Il contenuto all’interno del controllo viene semplicemente scalato Il controllo ViewBox
  16. 16. demo Gestire il layout
  17. 17. I controlli
  18. 18. Convergenza dei controlli 80% XAML condiviso 20% personalizzato Common SignatureOptimized DatePicker TimePicker CommandBar Button CheckBox RadioButton ProgressBar Slider ToggleSwitch Hub Pivot ListView GridView SysTray
  19. 19. • Il controllo Panorama è stato sostituito dal controllo Hub • E’ composto da HubSection per definire le varie sezioni • Principale differenza con il controllo Panorama: le sezioni sono definite da un DataTemplate Panorama
  20. 20. <Hub> <HubSection Header="Prima sezione"> <DataTemplate> <Image Source="/Assets/small-logo.jpg" /> </DataTemplate> </HubSection> <HubSection Header="Seconda sezione"> <DataTemplate> <StackPanel> <TextBlock Text="Contenuto della seconda sezione" /> </StackPanel> </DataTemplate> </HubSection> </Hub> Il controllo Hub
  21. 21. Il controllo ApplicationBar è stato sostituito dal controllo CommandBar ApplicationBar <Page.BottomAppBar> <CommandBar x:Name="commandBar"> <CommandBar.PrimaryCommands> <AppBarButton Label="edit" Icon="Edit" /> <AppBarButton Label="favorite" Icon="Favorite" /> <AppBarSeparator /> <AppBarToggleButton Label="play" Icon="Play" /> </CommandBar.PrimaryCommands> <CommandBar.SecondaryCommands> <AppBarButton Label="help" Icon="Question" /> </CommandBar.SecondaryCommands> </CommandBar> </Page.BottomAppBar>
  22. 22. Il controllo CommandBar Windows Phone Windows
  23. 23. • E’ stato sostituito dai controlli GridView e ListView • Il controllo GridView è ottimizzato per una visualizzazione a griglia • Il controllo ListView è ottimizzato per una visualizzazione a lista • Entrambi non richiedono più di creare una classe ad hoc per gestire il raggruppamento Il controllo LongListSelector
  24. 24. ListView e GridView
  25. 25. Semantic Zoom <SemanticZoom> <SemanticZoom.ZoomedInView> <!-- ListView or GridView --> <!-- ItemsSource binds to CollectionViewSource --> </SemanticZoom.ZoomedInView> <SemanticZoom.ZoomedOutView> <!-- ListView or GridView --> <!-- ItemsSource bound to CollectionViewSource, Path=CollectionGroups --> </SemanticZoom.ZoomedOutView> </SemanticZoom>
  26. 26. demo ListView e GridView
  27. 27. E’ stata sostituita dal controllo StatusBar e non può essere gestito dallo XAML StatusBar StatusBar StatusBar StatusBar StatusBar SystemTray
  28. 28. I flyout sostituiscono i controlli ContextMenu e ListPicker Flyout
  29. 29. <Button Content="Show Menu Flyout" Margin="20, 20, 100, 20"> <Button.Flyout> <MenuFlyout> <MenuFlyoutItem Text="Option 1" /> <MenuFlyoutItem Text="Option 2" /> <MenuFlyoutSeparator /> <ToggleMenuFlyoutItem Text="Toggle Option 1" IsChecked="True" /> <ToggleMenuFlyoutItem Text="Toggle Option 2" /> </MenuFlyout> </Button.Flyout> </Button> MenuFlyout
  30. 30. <Button> <Button.Flyout> <ListPickerFlyout x:Name="ListPickerFlyout" ItemsSource="{Binding Path=Comics}"> <ListPickerFlyout.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Binding Title}" /> </StackPanel> </DataTemplate> </ListPickerFlyout.ItemTemplate> </ListPickerFlyout> </Button.Flyout> </Button ListPickerFlyout
  31. 31. La navigazione
  32. 32. Il nuovo approccio Window Frame Page Window
  33. 33. • Si usa il metodo Navigate() della classe Frame • E’ richiesto il tipo della pagina e non l’url • Ora è supportato il passaggio di oggetti complessi private void Comics_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { Comic selectedComic = Comics.SelectedItem as Comic; Frame.Navigate(typeof (DetailPage), selectedComic); } Navigazione tra le pagine
  34. 34. • La classe Frame sostituisce il NavigationService • BackStack per accedere allo stack delle pagine • GoBack() per tornare alla pagina precedente • CanGoBack per sapere se ci sono pagine nello stack • Di default viene sempre restituita una nuova istanza della pagina • E’ possibile controllarlo tramite la proprietà NavigationCacheMode Gestione dello stack delle pagine
  35. 35. Gestire lo stato della pagina NavigationCacheMode.Disabled NavigationCacheMode.Enabled Required Page 1 Page 2 Page 3 new new ?
  36. 36. • Nuovo comportamento predefinito per allinearsi a Windows 8: il pulsante Back porta all’applicazione precedente • Tutti i template di Visual Studio (tranne Blank App) contengono la classe NavigationHelper che include la logica per mantenere il comportamento tradizionale • E’ possibile modificarlo pagina per pagina sottoscrivendosi all’evento Windows.Phone.UI.Input.HardwareButtons.BackPressed Il pulsante Back
  37. 37. Esempio di gestione del pulsante Back
  38. 38. E tanto altro ancora
  39. 39. Attenzione!
  40. 40. • Alcune feature non sono ancora supportate dal Windows Runtime • Non esiste un processo di conversione automatico da un progetto già esistente • Le librerie e i toolkit per Windows Phone 7.x / 8.0 non sono compatibili con le Windows Phone Store app Windows Phone Store app
  41. 41. • Migliori performance e minor consumo di memoria • Possibilità di condividere la maggior parte del codice con Windows 8 e, in futuro, Xbox One • Possibilità di sfruttare tutte le novità introdotte in Windows Phone 8.1 Ma…
  42. 42. • Molte librerie hanno già una versione compatibile con il Windows Runtime (Caliburn Micro, MVVM Light, JSON.NET, ecc.) • I principali produttori di toolkit sono al lavoro per supportare le Universal Windows app: • Telerik -> Beta disponibile su richiesta: universalwindows@telerik.com • Syncfusion • Infragistics Ma…
  43. 43. Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi info@qmatteoq.com @qmatteoq Grazie

×