09.02.2017 Views

creez-des-applications-pour-android

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3 Création d’interfaces graphiques<br />

<strong>android</strong>:layout_centerHorizontal="true"<br />

<strong>android</strong>:layout_centerVertical="true" /><br />

<br />

Ce layout peut avoir <strong>des</strong> enfants, qui seront <strong>des</strong> widgets ou d’autres layouts. Dans l’éventualité où<br />

un enfant serait un layout, alors il peut aussi avoir <strong>des</strong> enfants à son tour. On peut donc affirmer<br />

que, comme <strong>pour</strong> une famille, il est possible de construire un véritable arbre généalogique qui<br />

commence par la racine et s’étend sur plusieurs générations, comme à la figure suivante.<br />

Figure 3.70 – Dans cet exemple, on peut voir que toutes les vues sont <strong>des</strong> enfants ou petitsenfants<br />

du « LinearLayout » et que les autres layouts peuvent aussi avoir <strong>des</strong> enfants,<br />

tandis que les widgets n’ont pas d’enfant<br />

Ce que vous ne savez pas, c’est que la racine de notre application n’est pas la racine de la hiérarchie<br />

<strong>des</strong> vues et qu’elle sera forcément l’enfant d’une autre vue qu’a créée Android dans notre dos et à<br />

laquelle nous n’avons pas accès. Ainsi, chaque vue que nous utiliserons sera directement l’enfant d’un layout.<br />

3.8.1.1.2 Le placement Le placement — qui se dit aussi layout en anglais (à ne pas confondre<br />

avec les layouts qui sont <strong>des</strong> vues qui contiennent <strong>des</strong> vues, et le layout correspondant à la<br />

mise en page de l’interface graphique) — est l’opération qui consiste à placer les vues dans<br />

l’interface graphique. Ce processus s’effectue en deux étapes qui s’exécuteront dans l’ordre<br />

chronologique. Tout d’abord et en partant de la racine, chaque layout va donner à ses enfants<br />

<strong>des</strong> instructions quant à la taille qu’ils devraient prendre. Cette étape se fait dans la méthode<br />

void measure(int widthMeasureSpec, int heightMeasureSpec), ne vous préoccupez<br />

pas trop de cette méthode, on ne l’implémentera pas. Puis vient la seconde étape, qui débute<br />

elle aussi par la racine et où chaque layout transmettra à ses enfants leurs dimensions finales en<br />

fonction <strong>des</strong> mesures déterminées dans l’étape précédente. Cette manœuvre se déroule durant<br />

l’exécution de void layout(int bord_gauche, int plafond, int bord_droit, int<br />

plancher), mais on ne l’implémentera pas non plus.<br />

[[information]] | Si à un quelconque moment vous rencontrez une vue dont les limites ne lui<br />

correspondent plus, vous pouvez essayer de la faire se redimensionner en lançant sa méthode<br />

void requestLayout () — ainsi le calcul se fera sur la vue et sur toutes les autres vues qui<br />

<strong>pour</strong>raient être influencées par les nouvelles dimensions de la vue.<br />

3.8.1.1.3 Récupérer les dimensions De manière à récupérer les instructions de dimensions,<br />

vous pouvez utiliser int getMeasuredWidth () <strong>pour</strong> la largeur et int getMeasuredHeight<br />

() <strong>pour</strong> la hauteur, cependant uniquement après qu’un appel à measure(int, int) a été effectué,<br />

sinon ces valeurs n’ont pas encore été attribuées. Enfin, vous pouvez les attribuer<br />

220

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!