1. Xamarin.Forms
Montreal Mobile .NET Developers 10 Juin 2015
Laurent Duveau
laurent@ldex.ca
AngularJS, Azure et
Xamarin
MVP / MCT / RD @laurentduveau Montrealldex.ca
2. 2Xamarin.Forms – Montreal Mobile .NET Developers
Mes services
Besoin
d’aide?
Web/HTML5/AngularJS
Xamarin
Contactez moi!
www.LDEX.ca
ASP.NET
3. 3Xamarin.Forms – Montreal Mobile .NET Developers
Agenda
Introduction
Développement mobile multi-plateformes
Xamarin.Forms
Présentation
Principes de fonctionnement
XAML pour les écrans
Étendre les fonctionnalités
13. 13Xamarin.Forms – Montreal Mobile .NET Developers
Xamarin.Forms:
Partage étendu à la couche UI!
approche Xamarin traditionnelle
Shared UI Code
Xamarin et Xamarin.Forms
14. 14Xamarin.Forms – Montreal Mobile .NET Developers
Xamarin.Forms
Bâtir une app native iOS, Android et Windows à partir
d’une base de code C# unique.
15. 15Xamarin.Forms – Montreal Mobile .NET Developers
Xamarin.Forms
Partage aussi l’interface graphique!
Intégration possible de code spécifique à une
plateforme
Prise en main facile, pas de connaissance
spécifique des OS
Plus de 40 contrôles graphiques disponibles
16. 16Xamarin.Forms – Montreal Mobile .NET Developers
Comment ça marche ?
A l’exécution, chaque élément
graphique Xamarin.Forms est
généré dans son équivalent
spécifique à la plateforme cible
Une seule API pour générer
des interfaces natives et
spécifiques à l’OS
17. 17Xamarin.Forms – Montreal Mobile .NET Developers
Pages, Layouts, et Contrôles
En code ou en XAML (MVVM)
Data Binding bidirectionnel
Navigation
API commune d’animation
Messaging Center
Accès aux API natives avec des
CustomRenderers et
DependencyService
Camera, GPS, …
NFC, … sur Android
PassKit, … sur iOS
Tiles, … sur WP
Shared UI Code
Qu’est ce qui est disponible?
23. 23Xamarin.Forms – Montreal Mobile .NET Developers
Xamarin.Forms est un package NuGet
Le mettre à jour! (même sur un nouveau projet)
24. 24Xamarin.Forms – Montreal Mobile .NET Developers
C# ou XAML
var red = new Label
{
Text = "Stop",
BackgroundColor = Color.Red,
FontSize = 20,
WidthRequest = 100
};
var yellow = new Label
{
Text = "Slow down",
BackgroundColor = Color.Yellow,
FontSize = 20,
WidthRequest = 100
};
var green = new Label
{
Text = "Go",
BackgroundColor = Color.Green,
FontSize = 20,
WidthRequest = 200
};
Content = new StackLayout
{
Spacing = 10,
VerticalOptions = LayoutOptions.Center,
Orientation = StackOrientation.Horizontal,
HorizontalOptions = LayoutOptions.Center,
Children = { red, yellow, green }
};
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="HelloXamarinFormsWorldXaml.StackLayoutExample3"
Padding="20">
<StackLayout Spacing="10"
VerticalOptions="Center"
Orientation="Horizontal"
HorizontalOptions="Center">
<Label Text="Stop"
BackgroundColor="Red"
FontSize="20"
WidthRequest="100" />
<Label Text="Slow down"
BackgroundColor="Yellow"
FontSize="20"
WidthRequest="100" />
<Label Text="Go"
BackgroundColor="Green"
FontSize="20"
WidthRequest="200" />
</StackLayout>
</ContentPage>
25. 25Xamarin.Forms – Montreal Mobile .NET Developers
XAML
XAML différent du XAML Microsoft
=> Pas de designer Visual Studio!
26. 26Xamarin.Forms – Montreal Mobile .NET Developers
Code spécifique
if (Device.OS == TargetPlatform.WinPhone) // ou iOS, Android
{ ...
}
if (Device.Idiom == TargetIdiom.Phone) // ou .Tablet
{ ...
}
29. 29Xamarin.Forms – Montreal Mobile .NET Developers
En XAML
<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>
30. 30Xamarin.Forms – Montreal Mobile .NET Developers
Navigation
Root Page
Utiliser un NavigationPage: implémente Ia navigation dans les
pages
Navigation Standard
Navigation.PushAsync(nextPage);
Navigation.PopAsync();
Navigation Modale
Navigation.PushModalAsync(modalPage);
Navigation.PopModalAsync();
32. 32Xamarin.Forms – Montreal Mobile .NET Developers
Model-View-ViewModel
ModelView ViewModel
Affichage Intéraction avec la
vue
Objets du domaine
d’affaire
Events
Data
Data
33. 33Xamarin.Forms – Montreal Mobile .NET Developers
Model-View-ViewModel
ModelView ViewModel
Data Binding
Xamarin.Forms
Events
Data
41. 41Xamarin.Forms – Montreal Mobile .NET Developers
Étendre Xamarin.Forms
Créer ou personnaliser les contrôles UI
Custom Renderers
Utiliser des services à implémentation spécifique pour chaque
plateforme
Dependency Service
42. 42Xamarin.Forms – Montreal Mobile .NET Developers
Extensibilité
Custom Renderer
Hériter d’un contrôle existant
Créer un nouveau contrôle
Ajout de propriétés bindable
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/
43. 43Xamarin.Forms – Montreal Mobile .NET Developers
Custom Renderer
Contrôle de saisie de base que l’on désire étendre:
44. 44Xamarin.Forms – Montreal Mobile .NET Developers
Custom Renderer
Étape 1: Créer le contrôle étendu
Dans le projet commun (PCL):
45. 45Xamarin.Forms – Montreal Mobile .NET Developers
Custom Renderer
Étape 2: L’utiliser dans une page
Dans le projet commun (PCL):
46. 46Xamarin.Forms – Montreal Mobile .NET Developers
Custom Renderer
Étape 3: Implémenter le code du renderer
Dans les projets pour chaque plateforme
47. 47Xamarin.Forms – Montreal Mobile .NET Developers
Étape 4: Exporter le renderer
Dans les projets pour chaque plateforme:
Custom Renderer
48. 48Xamarin.Forms – Montreal Mobile .NET Developers
Extensibilité
Dependency Service
Partager les fonctionnalités spécifiques aux
plateformes à l’aide d’interfaces.
49. 49Xamarin.Forms – Montreal Mobile .NET Developers
Dependency Service
Étape 1: Créer une interface
Dans le projet commun (PCL):
50. 50Xamarin.Forms – Montreal Mobile .NET Developers
Dependency Service
Étape 2: Implémenter le code spécifique
Dans les projets pour chaque plateforme:
51. 51Xamarin.Forms – Montreal Mobile .NET Developers
Dependency Service
Étape 3: Exposer le service
Dans les projets pour chaque plateforme:
52. 52Xamarin.Forms – Montreal Mobile .NET Developers
Dependency Service
Étape 4: Utiliser depuis le code commun
Dans le projet commun (PCL):
59. 59Xamarin.Forms – Montreal Mobile .NET Developers
Pour aller plus loin…
Documentation
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/
XAML
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/xaml-
for-xamarin-forms/
Exemples
https://github.com/xamarin/xamarin-forms-samples