Tutoriel : introduction au développement d'applications Windows Phone 7

Date de publication : 15/11/2010. Date de mise à jour : 15/11/2010.

Par Nico-pyright(c) (Page d'accueil)
 

Cet article constitue une introduction au développement d'applications pour Windows Phone 7. Il est le premier d'une série traitant de divers aspects de programmation sous ce nouvel environnement.
Commentez cet article : Commentez Donner une note à l'article (5)

Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites      



1.Introduction
2.Généralités sur WP7
3.Installation des outils
4.Première application Windows Phone 7
5.L'émulateur
6.Analyse du code
7.Les autres templates de création de projet
8.Téléchargements
9.Conclusion
Remerciements
Contact


1.Introduction

Windows Phone 7 (WP7) est la nouvelle plateforme de développement de Microsoft destinée aux smartphone.

Dans ce premier tutoriel, vous découvrirez comment démarrer le développement d'applications avec Windows Phone 7.
Nous commencerons par installer les outils nécessaires au développement sur WP7 puis nous créerons un premier programme simpliste en utilisant Silverlight pour WP7.
Enfin, nous l'exécuterons sur l'émulateur et découvrirons son fonctionnement.


2.Généralités sur WP7

WP7 supporte deux langages pour développer des applications :

  • C# ;
  • VB.NET.
WP7 supporte également deux plateformes de développement :

  • Silverlight ;
  • XNA.
Silverlight, qui a déjà fait ses preuves pour le développement d'applications client léger, est en général utilisé dans le développement d'applications de gestion. La puissance du XAML, des mécanismes de bindings ainsi que la richesse des contrôles visuels (textbox, button...) en font un langage de premier choix pour le développement d'applications utilitaires.

XNA quant à lui est la plateforme de développement de jeux. On peut aussi bien développer des jeux 2D que 3D. XNA est aussi plus performant que Silverlight quand il s'agit de faire du traitement audio. Bref, il est particulièrement adapté au développement de jeux sur smartphones.

Dans les premiers tutoriels nous nous concentrerons sur l'utilisation de Silverlight pour WP7 mais dans les prochains tutoriels nous découvrirons également le développement XNA.

Pour le reste de ces articles, je considère que vous avez déjà des notions dans le développement d'applications utilisant le XAML et le C# sinon n'hésitez pas à consulter les tutoriels de la rubrique concernée.

Notez que Silverlight pour WP7 n'est pas tout à fait le Silverlight que vous avez déjà pu rencontrer. C'est un Silverlight adapté aux Windows Phones. Il s'agit d'une autre version de Silverlight, basée à ce jour sur Silverlight 3 et dont les contrôles standards ont été adaptés pour prendre en charge les spécificités des téléphones. Ce qui implique que si un contrôle n'a pas été écrit dans ce sens, alors il ne fonctionnera pas avec WP7. On ne pourra donc pas récupérer la pléthore de contrôles déjà existants.

Une dernière remarque par rapport au matériel. Au jour d'aujourd'hui nous avons des téléphones qui peuvent supporter les résolutions suivantes :

  • - Large : 480 x 800 ;
  • - Small : 320 x 480.
et ils fonctionnent aussi bien en mode portrait qu'en mode paysage.


3.Installation des outils

On commence par télécharger les Windows Phone Developer Tools.


Figure 1 : télécharger les Windows Phone Developer Tools.


À noter qu'il faut disposer d'une version de Windows Vista ou bien de Windows 7, sinon vous aurez l'erreur suivante :

Figure 2 : pré-requis : Windows Vista ou Windows 7.


Une fois ces conditions réunies, on peut débuter l'installation :

Figure 3 : installation des Windows Phone Developer Tools.


À noter qu'il faut être connecté à Internet car le programme télécharge des composants :

Figure 4 : téléchargement des composants de l'installation.


On enchaîne ensuite sur l'installation de ces composants :

Figure 5 : installation des composants.


À la fin de l'installation, on pourra découvrir un nouvel élément dans le menu démarrer :

Figure 6 : Visual Studio for Windows Phone.


Et démarrons notre nouveau Visual Studio for Windows Phone...


4.Première application Windows Phone 7

Passons maintenant à la création de notre premier projet Windows Phone 7.

Cliquons sur Fichier --> Nouveau Projet et choisissons une "Application Windows Phone" :

Figure 7 : création d'un application Windows Phone.


Visual Studio génère plein de choses et on observe la fenêtre de design qui contient à droite le XAML généré et à gauche une prévisualisation du XAML "embarqué" dans une image de téléphone.

Figure 8 : le designer de Visual Studio for Windows Phone.


Avant de regarder ce qui a été généré, on vérifie que tout marche bien. Compilons puis démarrons l'application (F5).

Figure 9 : démarrage de l'émulateur Windows Phone 7.


L'émulateur se lance et on peut voir dans le cadre rouge que Visual Studio est en train de se connecter à l'émulateur. L'application n'est pas encore chargée. Il faudra attendre que Visual Studio se mette en debug et que l'on voit marqué en bas à droite "déploiement réussi" pour que l'application soit effectivement chargée :

Figure 10 : l'application est prête à être utilisée dans l'émulateur.

5.L'émulateur

Jouons un peu avec l'émulateur. Nous avons des icônes à droite de l'émulateur qui apparaissent :

Figure 11 : icônes de contrôle de l'émulateur.
  • 1) permet de fermer l'émulateur ;
  • 2) permet de réduire l'émulateur ;
  • 3) permet de faire pivoter l'émulateur pour passer en mode paysage ;


Figure 12 : émulateur en mode paysage.
  • 4) comme le 3) mais dans l'autre sens ;
  • 5) permet d'ajuster l'émulateur à la taille de l'écran ;
  • 6) permet de définir le zoom de l'émulateur.
On peut également constater des boutons en bas de l'émulateur, avec à gauche le bouton "back", au milieu le bouton "start" et un bouton "rechercher".

Le bouton "back" correspond à la fermeture de l'application. On peut le constater lorsque l'application est en mode dégogage ; si l'on clique sur "back" alors le débogueur de Visual Studio s'arrête.
Cependant, l'émulateur est toujours lancé et chargé en mémoire. Visual Studio pourra s'y reconnecter lors du prochain démarrage de l'application (F5). Ceci s'avère bien utile et optimisera les prochains lancements de l'application dans l'émulateur. En effet, il ne sera plus utile à l'émulateur de faire sa phase de synchronisation...

Le bouton de l'émulateur qui servira sans doute le plus est le bouton qui permet de passer d'un mode paysage à un mode portrait et inversement. Nous pourrons ainsi constater comment l'application se comporte dans les deux modes.
En l'occurrence, on peut voir ici que ce n'est pas joli joli... En effet, ce comportement n'est pas géré par l'application générée par défaut.


6.Analyse du code

Repassons sur Visual Studio et regardons ce qui est généré.
En ouvrant le fichier App.xaml.cs, on se rend compte que la classe contient une propriété :
App.xaml.cs

public PhoneApplicationFrame RootFrame { get; private set; }
            
La propriété RootFrame identifie la page de démarrage de l'application. C'est le container de base pour toutes les applications Windows Phone. Elle est de type PhoneApplicationFrame et permet d'accueillir des pages pour Windows Phone, de type PhoneApplicationPage.

On voit aussi apparaître un code qu'on ne voit pas dans les applications Silverlight usuelles :
App.xaml.cs

// Ne pas ajouter de code supplémentaire à cette méthode
private void InitializePhoneApplication()
{
	if (phoneApplicationInitialized)
		return;

	// Créez le frame, mais ne le définissez pas encore comme RootVisual ; cela permet à l'écran de
	// démarrage de rester actif jusqu'à ce que l'application soit prête pour le rendu.
	RootFrame = new PhoneApplicationFrame();
	RootFrame.Navigated += CompleteInitializePhoneApplication;

	// Gérer les erreurs de navigation
	RootFrame.NavigationFailed += RootFrame_NavigationFailed;

	// Garantir de ne pas retenter l'initialisation
	phoneApplicationInitialized = true;
}

// Ne pas ajouter de code supplémentaire à cette méthode
private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
{
	// Définir le Visual racine pour permettre à l'application d'effectuer le rendu
	if (RootVisual != RootFrame)
		RootVisual = RootFrame;

	// Supprimer ce gestionnaire, puisqu'il est devenu inutile
	RootFrame.Navigated -= CompleteInitializePhoneApplication;
}

            
Il s'agit de tout ce qui est initialisation propre au téléphone.

Allons voir le fichier MainPage.xaml.cs, nous pouvons voir que la page hérite de PhoneApplicationPage :
MainPage.xaml.cs

public partial class MainPage : PhoneApplicationPage
{
}
			
Quand on ouvre le fichier MainPage.xaml, un point important à remarquer est que ça ressemble beaucoup à une application Silverlight classique. On voit une Grid, un TextBlock, etc.
Modifions-les un peu pour afficher quelque chose d'un peu plus sympa que "mon application" ou "nom de la page" en changeant les deux textblocks :
MainPage.xaml

<TextBlock x:Name="ApplicationTitle" Text="Test de Windows Phone 7" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="Hello World !" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
			
En haut du fichier, nous remarquons aussi la déclaration suivante :
MainPage.xaml

SupportedOrientations="Portrait" Orientation="Portrait"
			
qui signifie, comme on peut le deviner, que l'application démarre en mode portrait et ne supporte que celui-ci.
Un petit coup d'intellisense et on remarque que les modes supportés sont :

  • Portrait ;
  • Landscape ;
  • PortraitOrLandscape.
Si je passe en mode paysage (Landscape), j'aurai bien sûr l'affichage suivant :

Figure 13 : l'application en mode paysage.


Réglons enfin sur :
MainPage.xaml

SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
			
et rajoutons un textblock :
MainPage.xaml

<TextBlock x:Name="OrientationTextBlock" FontSize="25"/>
			
Il est possible de détecter un changement d'orientation en surchargeant la méthode OnOrientationChanged :
MainPage.xaml.cs

public partial class MainPage : PhoneApplicationPage
{
	// Constructeur
	public MainPage()
	{
		InitializeComponent();
	}

	protected override void OnOrientationChanged(OrientationChangedEventArgs e)
	{
		OrientationTextBlock.Text = "On passe en mode " + e.Orientation ;
		base.OnOrientationChanged(e);
	}
}
			
À chaque changement d'orientation, on pourra voir un message signalant la réception de l'événement et la réorientation des contrôles :

Figure 14 : l'application change de mode d'orientation.


Bien sûr, c'est l'endroit idéal pour recalculer les dimensions si l'on souhaite que son application ait un look qui va bien dans le mode choisi...

On peut voir enfin dans la solution, des images comme ApplicationIcon.png. Si vous les ouvrez vous pourrez notamment constater que ce sont ces images qu'il faut changer si l'on souhaite changer, par exemple, l'image de l'application :

Figure 15 : l'image de l'application.

7.Les autres templates de création de projet

Notez que lors de la création du projet vous avez pu voir différents templates pour créer une application pour WP7. J'ai choisi le plus basique : Application Windows Phone car c'est le plus simple et que je trouve qu'il est plus intéressant pour apprendre et rajouter des briques petit à petit à son application en comprenant vraiment ce que l'on fait.

Vous pouvez voir ci-dessous la liste complète des templates proposés :

Figure 16 : la liste des templates de création de projet.


Le template Application liée aux données Windows Phone génère un projet exemple qui contient une ListBox bindée à des données. On voit également comment naviguer entre des pages de l'application lors d'un clic sur un élément de la ListBox.

Le template Bibliothèque de classes Windows Phone est un projet que l'on utilisera pour rajouter des composants à son application (nouvelle bibliothèque de contrôles, nouveaux modules, classes, etc.).

Le template Application Panorama présente un des contrôles importants dans les applications WP7 qui permet de faciliter la consultation de l'affichage d'un écran trop grand. Il permet de scinder l'écran et propose une navigation comme si l'on tournait les pages d'un livre. Un glissement horizontal sur l'écran (swipe) permet de passer à l'élément suivant. Lorsque l'on atteint le dernier élément on repasse automatiquement au premier.

Le template Application Pivot Windows Phone présente l'autre contrôle important dans le développement d'applications WP7. Il permet grosso modo la même chose que le contrôle Panorama. La différence est qu'on utilisera plutôt le contrôle Pivot lorsqu'on veut présenter plusieurs pages de la même donnée.
Le contrôle Panorama sera plutôt utilisé lorsqu'on veut présenter une navigation entre plusieurs pages.

Le template Windows Phone Game permet de développer un jeu avec XNA. Ici le paradigme est différent d'une application Silverlight et les références se font au framework XNA. Le projet généré ne fait qu'afficher simplement un fond bleu mais présente la structure basique d'un jeu utilisant XNA.

Le template Bibliothèque Windows Phone Game permet de rajouter des composants à son application XNA. Notez que nous reviendrons sur la programmation XNA dans un tutoriel ultérieur.

Les autres templates sont des templates XNA pour des développements autres que téléphone (XBox, etc.).

N'hésitez pas à fouiller dans les projets générés par les autres templates, ils ont des vertus didactiques et sont toujours intéressants à comprendre.


8.Téléchargements

Vous pouvez télécharger ici les sources du projet : version rar (63 Ko), version zip (69 Ko).


9.Conclusion

Ce Ce premier tutoriel a donc constitué une introduction au développement d'applications pour Windows Phone. D'autres suivront. Vous avez pu découvrir comment installer les différents outils pour développer sur WP7.
Vous avez également pu voir comment créer une application simple et voir son exécution dans l'émulateur Windows Phone.
Enfin, nous avons également eu un aperçu des différentes orientations du téléphone et le moyen de les détecter.

J'espère que ce tutoriel a pu vous être utile et vous a donné envie de créer des applications sur Windows Phone 7.


Remerciements

Je remercie les membres de l'équipe Dotnet pour leurs relectures attentives du document et leurs remarques, ainsi que Benj. et jacques_jean pour leurs relectures orthographiques.


Contact

Si vous constatez une erreur dans le tutoriel, dans le code source, dans la programmation ou pour toute information, n'hésitez pas à me contacter par le forum.



               Version PDF   Version hors-ligne

Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2010 Nico-pyright(c). Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC. Cette page est déposée.

 
 
 
 
Partenaires

Hébergement Web