09.02.2017 Views

creez-des-applications-pour-android

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.1 Constitution <strong>des</strong> interfaces graphiques<br />

} } “‘<br />

[[question]] | C’est un peu contraignant ! Et si on se contentait de faire un premier setContentView<br />

<strong>pour</strong> « inflater » (désérialiser) l’arbre et récupérer la vue <strong>pour</strong> la mettre dans un second<br />

setContentView ?<br />

Un peu comme cela, voulez-vous dire ?<br />

import <strong>android</strong>.app.Activity;<br />

import <strong>android</strong>.os.Bundle;<br />

import <strong>android</strong>.widget.TextView;<br />

public class TroimsActivity extends Activity {<br />

TextView monTexte = null ;<br />

@Override<br />

public void onCreate(Bundle savedInstanceState) {<br />

super.onCreate(savedInstanceState);<br />

setContentView(R.layout.activity_main);<br />

monTexte = (TextView)findViewById(R.id.text);<br />

monTexte.setPadding(50, 60, 70, 90);<br />

}<br />

}<br />

setContentView(R.layout.activity_main);<br />

[[question]] | Ah d’accord, comme cela l’arbre sera inflate et on n’aura pas à utiliser la méthode<br />

compliquée vue au-<strong>des</strong>sus…<br />

C’est une idée… mais je vous répondrais que vous avez oublié l’optimisation ! Un fichier XML<br />

est très lourd à parcourir, donc construire un arbre de vues prend du temps et <strong>des</strong> ressources. À la<br />

compilation, si on détecte qu’il y a deux setContentView dans onCreate, eh bien on ne prendra<br />

en compte que la dernière ! Ainsi, toutes les instances de setContentView précédant la dernière<br />

sont rendues caduques.<br />

— Eclipse vous permet de confectionner <strong>des</strong> interfaces à la souris, mais cela ne sera jamais<br />

aussi précis que de travailler directement dans le code.<br />

— Tous les layouts héritent de la super classe ViewGroup qui elle même hérite de la super<br />

classe View. Puisque les widgets héritent aussi de View et que les ViewGroup peuvent<br />

contenir <strong>des</strong> View, les layouts peuvent contenir d’autres layouts et <strong>des</strong> widgets. C’est là<br />

toute la puissance de la hiérarchisation et la confection <strong>des</strong> interfaces.<br />

— View regroupe un certain nombre de propriétés qui deviennent communes aux widgets et<br />

aux layouts.<br />

— Lorsque vous désérialisez (ou inflatez) un layout dans une activité, vous devez récupérer<br />

les widgets et les layouts <strong>pour</strong> lesquels vous désirez rajouter <strong>des</strong> fonctionnalités. Cela se<br />

fait grâce à la classe R.java qui liste l’ensemble <strong>des</strong> identifiants de vos ressources.<br />

89

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

Saved successfully!

Ooh no, something went wrong!