Conception d'interface utilisateur Android Principes de base de la mise en page

Comprendre les schémas est important pour bien concevoir une application Android. Dans ce didacticiel, nous fournissons une vue d'ensemble de la manière dont les dispositions s'intègrent dans l'architecture de l'application Android. Nous explorons également certaines des commandes de disposition spécifiques disponibles pour organiser le contenu de l'écran de l'application de différentes manières..

Qu'est-ce qu'une mise en page??

Les développeurs Android utilisent le terme mise en page pour désigner l'une des deux choses suivantes. Les deux définitions s'appliquent à ce didacticiel et sont malheureusement utilisées de manière interchangeable dans la communauté de développement Android. Les deux définitions de la mise en page sont les suivantes:

  • Un type de ressource qui définit ce qui est dessiné à l'écran. Les ressources de présentation sont stockées sous la forme de fichiers XML dans le répertoire de ressources / res / layout de l'application. Une ressource de présentation est simplement un modèle pour un écran d’interface utilisateur, ou une partie d’écran, et contient.
  • Un type de classe View dont le but principal est d'organiser d'autres contrôles. Ces classes de présentation (LinearLayout, RelativeLayout, TableLayout, etc.) sont utilisées pour afficher des contrôles enfants, tels que des contrôles de texte, des boutons ou des images à l'écran..

Les interfaces utilisateur Android peuvent être définies en tant que ressources de mise en page au format XML ou créées par programme..

Utilisation d'Eclipse pour concevoir des ressources de mise en page

Le plug-in de développement Android pour Eclipse inclut un concepteur de ressources de mise en page très pratique pour la conception et la prévisualisation des ressources de mise en page. L'outil comprend deux vues: la vue Mise en forme vous permet de voir comment les contrôles apparaîtront sur différents écrans et pour chaque orientation, et la vue XML vous montre la définition XML de la ressource. Le concepteur de ressources de présentation est présenté dans cette figure:

Voici quelques astuces pour travailler avec le concepteur de ressources de présentation dans Eclipse:

  • Utilisez le volet Contour pour ajouter et supprimer des contrôles à votre ressource de présentation.
  • Sélectionnez un contrôle spécifique (dans l'aperçu ou dans le plan) et utilisez le volet de propriétés pour ajuster les attributs d'un contrôle spécifique..
  • Utilisez l'onglet XML pour modifier directement la définition XML.

Il est important de noter que l'aperçu du concepteur de ressources de présentation Eclipse ne peut pas reproduire exactement la présentation de la présentation pour les utilisateurs finaux. Pour cela, vous devez tester votre application sur un émulateur correctement configuré et, plus important encore, sur vos périphériques cibles. En outre, certains contrôles «complexes», notamment les onglets ou les visualiseurs de vidéos, ne peuvent pas être prévisualisés dans Eclipse..

Définir une ressource de présentation XML

Le moyen le plus pratique et le plus facile à gérer de concevoir des interfaces utilisateur pour les applications consiste à créer des ressources de présentation XML. Cette méthode simplifie grandement le processus de conception de l'interface utilisateur, en transférant une grande partie de la création et de la présentation statiques des contrôles de l'interface utilisateur et de la définition des attributs de contrôle vers le format XML, au lieu de jeter des résidus de code. Cela crée une distinction potentielle entre les concepteurs d'interface utilisateur (qui se préoccupent davantage de disposition) et les développeurs (qui connaissent Java et implémentent les fonctionnalités de l'application). Les développeurs peuvent toujours modifier le contenu d'un écran par programmation, si nécessaire. Les contrôles complexes, tels que ListView ou GridView, sont généralement renseignés avec des données par programme.

Les ressources de présentation XML doivent être stockées dans le répertoire de projet / res / layout (ou, dans le cas de ressources alternatives, dans un sous-répertoire spécialement nommé). Il est courant de créer une ressource de présentation XML pour chaque écran de votre application (étroitement liée à une activité spécifique), mais cela n'est pas obligatoire. Vous pouvez, en théorie, créer une ressource de présentation XML et l'utiliser pour différentes activités, en fournissant différentes données à l'écran. Vous pouvez également composer vos ressources de présentation et les inclure les unes dans les autres, si nécessaire..

Ce qui suit est une ressource de présentation XML simple, un modèle avec LinearLayout contenant un TextView et un ImageView, défini en XML:

     

Cette mise en page représente un simple écran avec deux commandes: d'abord du texte, puis une image en dessous. Ces contrôles sont organisés dans un LinearLayout orienté verticalement. Les deux figures suivantes montrent à quoi cette disposition pourrait ressembler sur un périphérique en modes portrait et paysage:

Dans l'activité, une seule ligne de code dans la méthode onCreate () est nécessaire pour charger et afficher une ressource de présentation à l'écran. Si la ressource de présentation était stockée dans le fichier /res/layout/main.xml, ce serait:

 setContentView (R.layout.main); 

Définir une mise en page par programme

Vous pouvez également créer par programmation des composants d'interface utilisateur. Pour l'organisation et la facilité de maintenance, il est préférable de laisser cela au cas rare plutôt qu'à la norme. Au lieu de charger une ressource de présentation directement à l'aide de la méthode setContentView (), vous devez créer le contenu de l'écran, puis fournir un objet de présentation parent qui contient tout le contenu du contrôle à afficher sous forme de vues enfant à la méthode setContentView ()..

Par exemple, le code suivant montre comment faire en sorte qu'une activité instancie une vue LinearLayout par programme et y place deux objets TextView. Aucune ressource que ce soit n'est utilisée.

 public void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); // setContentView (R.layout.main); Étiquette TextView = new TextView (this); label.setText (R.string.my_text_label); label.setTextSize (20); label.setGravity (Gravity.CENTER_HORIZONTAL); ImageView pic = new ImageView (this); pic.setImageResource (R.drawable.matterhorn); pic.setLayoutParams (nouveaux LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); pic.setAdjustViewBounds (true); pic.setScaleType (ScaleType.FIT_XY); pic.setMaxHeight (250); pic.setMaxWidth (250); LinearLayout ll = new LinearLayout (this); ll.setOrientation (LinearLayout.VERTICAL); ll.setLayoutParams (nouveaux LayoutParams (LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); ll.setGravity (Gravity.CENTER); ll.addView (label); ll.addView (pic); setContentView (ll);  

Comme vous pouvez le constater, la taille du code peut augmenter rapidement à mesure que de nouveaux contrôles sont ajoutés à l'écran, ce qui rend le contenu de l'écran plus difficile à gérer ou à réutiliser..

Explorer différents types de mise en page

Passons maintenant à ces contrôles de mise en page utiles qui organisent d’autres contrôles. Les classes de mise en page les plus couramment utilisées sont:

  • FrameLayout - conçu pour afficher une pile de contrôles View enfants. Plusieurs contrôles de vue peuvent être ajoutés à cette présentation. Cela peut être utilisé pour afficher plusieurs contrôles dans le même espace d'écran.
  • LinearLayout - conçu pour afficher les contrôles de vue enfant dans une seule ligne ou une seule colonne. C'est une méthode de mise en page très pratique pour créer des formulaires.
  • Disposition relative - conçu pour afficher les contrôles de vue enfant les uns par rapport aux autres. Par exemple, vous pouvez définir un contrôle pour qu'il soit positionné «au-dessus» ou «en-dessous» ou «à gauche de» ou «à droite de» un autre contrôle, désigné par son identificateur unique. Vous pouvez également aligner les contrôles de vue enfant par rapport aux bords parent..
  • TableLayout - conçu pour organiser les contrôles de vue enfant en lignes et en colonnes. Des commandes de vue individuelles sont ajoutées à chaque ligne du tableau à l'aide d'une vue de présentation TableRow (qui est essentiellement un LinearLayout orienté horizontalement) pour chaque ligne du tableau..

Combinaison de dispositions pour organiser les contrôles

Une mise en page (LinearLayout, TableLayout, RelativeLayout, etc.) est un contrôle comme un autre. Cela signifie que les contrôles de présentation peuvent être imbriqués. Par exemple, vous pouvez utiliser un RelativeLayout dans un LinearLayout, ou inversement, pour organiser les contrôles sur un écran. La figure suivante montre un écran avec LinearLayout (parent), un TableLayout (enfant du haut) _et un FrameLayout (enfant du bas)..

Mais méfiez-vous! Gardez vos écrans relativement simples. les dispositions complexes se chargent lentement et posent des problèmes de performances.

Fournir des ressources alternatives de mise en page

Prenez en compte les différences de périphérique lors de la conception des ressources de présentation de votre application. Il est souvent possible de concevoir des mises en page flexibles et esthétiques sur différents périphériques, en mode portrait ou paysage. Si nécessaire, vous pouvez inclure d'autres ressources de présentation pour traiter des cas particuliers. Par exemple, vous pouvez charger différentes configurations à charger en fonction de l’orientation du périphérique ou du fait que le périphérique dispose ou non d’un grand écran (par exemple une tablette Internet)..

Pour plus d'informations sur l'utilisation des ressources alternatives, voir la documentation du SDK Android sur Ressources Android..

Outils de mise en page et optimisation

Le SDK Android comprend plusieurs outils permettant de concevoir, de déboguer et d’optimiser les ressources de présentation. Outre le concepteur de ressources de présentation intégré au plug-in Android pour Eclipse, vous pouvez utiliser le visualiseur de hiérarchie et les outils de présentation fournis avec le SDK Android. Ces outils sont disponibles dans le répertoire / tools de votre SDK Android..

Vous pouvez utiliser le visualiseur de hiérarchie pour inspecter les détails de la présentation au moment de l'exécution. En savoir plus sur la visionneuse de hiérarchie sur le site Web de développeur Android.

Vous pouvez utiliser l'outil de ligne de commande layoutopt pour optimiser vos fichiers de présentation. L'optimisation des mises en page est importante car les fichiers de mise en page compliqués sont lents à charger. L'outil layoutopt analyse simplement les fichiers de présentation XML et identifie les contrôles inutiles. En savoir plus sur l'outil layoutopt sur le site Web d'Android Developer.

Conclusion

Les interfaces utilisateur des applications Android sont définies à l'aide de dispositions. Il existe différents types de modèles pouvant être utilisés pour organiser les contrôles sur un écran ou sur une partie d'un écran. Les mises en forme peuvent être définies à l'aide de ressources XML ou par programmation au moment de l'exécution en Java. Des dispositions alternatives peuvent être chargées dans des circonstances spéciales, par exemple pour fournir une interface utilisateur alternative en mode portrait ou paysage. Enfin, la conception de bonnes mises en page est importante pour la performance des applications. utiliser des outils SDK Android tels que la visionneuse de hiérarchie et layoutopt pour déboguer et optimiser les présentations de vos applications.

à propos des auteurs

Les développeurs mobiles Lauren Darcey et Shane Conder ont co-écrit plusieurs livres sur le développement Android: un livre de programmation en profondeur intitulé Développement d'applications sans fil Android et Sams TeachYourself Développement d'applications Android en 24 heures. Lorsqu'ils n'écrivent pas, ils passent leur temps à développer des logiciels mobiles dans leur entreprise et à fournir des services de conseil. Vous pouvez les contacter par courrier électronique à l'adresse [email protected], via leur blog à l'adresse androidbook.blogspot.com et sur Twitter @androidwireless..

!