Android : Mélanger des vues statiques et dynamiques

Android propose deux méthodes pour créer un écran d’une application :

  • Une méthode dynamique, se basant sur une structure de composants créés dans du code Java : les pages sont créés en assemblant des conteneurs (Layout) et des composants (Button, TextView, …). Par exemple, voilà le code pour créer un formulaire avec un texte, un input et un bouton de validation :
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LinearLayout addTask = new LinearLayout(this);
    addTask.setOrientation(LinearLayout.HORIZONTAL);
    
    // Interface pour ajouter des tâches
    TextView label = new TextView(this);
    label.setText("new");
    addTask.addView(label);
    newTask = new EditText(this);
    newTask.setWidth(100);
    addTask.addView(newTask);
    Button addButton = new Button(this);
    addButton.setText("add");
    initButton(addButton);
    addTask.addView(addButton);
    setContentView(layout);
    }
  • Une méthode statique, se basant sur des fichiers XML. Ici, on décrit le même genre d’éléments (conteneurs et composants) mais dans un format XML, plus convivial :
    
    
        
        
        

Chaque méthode a ses avantages et ses inconvénients. Par exemple, la méthode statique et plus concise et plus lisible, alors que la méthode dynamique est plus flexible (car dynamique !) mais plus abscons. C’est pourquoi il peut être utile de mélanger les deux méthodes, et ainsi obtenir des vues facilement modifiables et dynamiques !

Pour cela, deux possibilités : mettre des éléments dynamiques dans une vue statique, ou mettre des éléments statiques dans une vue dynamique.

Eléments statiques dans une vue dynamique

Le but de cette manipulation et de récupérer des vues décrites dans des fichiers XML, et de les placer où on le souhaite dans une vue créée dynamiquement. Pour le faire (et le faire bien!), il faut comprendre le système de chargement des ressources. Je ne m’étendrais pas sur le sujet (le guide de dev d’Android est assez bien fourni dessus), mais pour charger un layout autrement qu’en l’associant à la vue complète (Activity.setContentView(R.layout.*)), il est nécessaire de passer par un object LayoutInflater, qui va se charger de transformer les éléments déjà traité par le système de ressource en Object Layout exploitable.

Dans l’exemple suivant, le layout menu (créé dans le fichier XML res/layout/menu.xml) est chargé et ajouté dans un layout existant :

	LinearLayout layout = new LinearLayout(this);
	layout.setOrientation(LinearLayout.VERTICAL);

	// ... Construction du début de la page

	LinearLayout menu = (LinearLayout) getLayoutInflater().inflate(R.layout.menu, null);
	layout.addView(menu);

	//... Construction de la fin de la page

	setContentView(layout);

Eléments dynamiques dans une vue statique

Le but de cette manipulation est d’avoir une page statique représentant la structure de la page, et de la compléter avec des éléments dynamiques.

Ce contenu a été publié dans Android par . Mettez-le en favori avec son permalien.

2 thoughts on “Android : Mélanger des vues statiques et dynamiques

  1. Thanks for some quality points there. I am kind of new to online , so I printed this off to put in my file, any better way to go about keeping track of it then printing?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *