Layout pour Windows Mobile (Part 1)
Windows Mobile est, contrairement à ce que l’on pourrait croire, une plateforme ultra complète pour le développement mobile : Compact Framework, office, téléphonie, connectivité, Bluetooth, GPS, notifications, gesture, Web Service, Threading …
Malgré tout cela, Windows Mobile se traine une API plutôt vieillotte concernant l’interface graphique. L’un des points faibles qui va nous intéresser est le layouting, c’est à dire le positionnement, le dimensionnement et la création de formulaires mobiles pour créer de vraies applications métiers.
En effet, la création d’un formulaire Windows Mobile n’est pas évidente si on souhaite obtenir une interface modulable qui s’adapte à la fois à la résolution, à l’orientation de l’écran ainsi qu’au contenu des contrôles.
Un problème majeur qu’on rencontre également en Windows Forms à la différence que le Framework .NET est plus complet sur ce point (FlowLayoutPanel, TableLayoutPanel, AutoSize, GDI+ …).
Bref : Windows Mobile n’offre pas vraiment de solution “toute prête” pour positionner et dimensionner les éléments d’une interface. De ce fait, on abouti souvent à des interfaces peu homogènes et qui ne fonctionnent que pour une résolution donnée (je ne parle même pas de la rotation d’écran).
Une des principales lacunes des contrôles Windows Mobile est qu’ils ne sont pas capables d’adapter leur taille en fonction de leur contenu. L’exemple le plus flagrant est le contrôle Label qui ne possède pas de propriété AutoSize : vous devez définir des dimensions fixes. Et si par malheur le texte vient à change en cours d’exécution et qu’il dépasse la taille du Label, le texte sera tronqué.
Les figures ci-dessous illustrent cette problématique. A gauche , on peut voir un label avec un texte suffisamment court pour qu’il rentre en largeur. A droite, le même label mais pour lequel j’ai dû positionner un texte plus long : on ne peut tout simplement pas voir la fin du texte.
Si certains se disent “trop simple ! Un petit coup de MeasureString et le tour est joué”, sachez que le Compact Framework ne permet pas de calculer la taille d’un texte avec des contraintes en largeur :p
Toutes ces problématiques ont des solutions et je vous propose de les découvrir ensemble dans cette série de posts. La prochaine fois sera (je pense) consacrée aux outils que propose le Compact Framework afin de créer vos formulaires.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :