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..
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:
Les interfaces utilisateur Android peuvent être définies en tant que ressources de mise en page au format XML ou créées par programme..
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:
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..
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);
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..
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:
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.
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..
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.
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.
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..