[Tuto] Créer une interface Android en code

Introduction

Comment créez-vous vos interfaces sous Android ? Je pense que 95% d’entre vous répondront à cette question par la réponse suivante : en XML, dans le dossier layout. C’est sans doute la méthode la plus simple, la plus propre, qui permet une meilleure organisation et relecture. Seulement, il faut savoir que ce n’est pas la seule possibilité et que vous pouvez aussi le faire directement en Java.

Je conseille généralement de le faire lorsqu’il y a un réel intérêt derrière, sinon il s’agit surement d’une perte de temps.

Quels sont les intérêts d’utiliser cette méthode justement ? Ils sont multiples, je vais en citer quelques uns mais vous en trouverez surement d’autres :

  • Répéter la même interface à plusieurs reprises : il est possible de le faire en XML mais ça demande à un travail très répétitif et de toute façon limité.
  • A titre personnel, je maitrise beaucoup mieux la création d’une interface extensible de cette manière. Je suis pourtant un fervent défenseur du RelativeLayout ;)
  • Enfin, cela pourrait vous permettre de créer vos propres éléments d’interface facilement implémentable dans n’importe quel projet.

N’ayant jamais trouvé de réponse complète à mes question lorsque je cherchais moi-même à créer une interface comme celle-ci, je vais essayer d’aller au plus simple mais aussi clairement que possible afin que vous puissiez comprendre parfaitement le fonctionnement. Vous verrez, ce n’est pas si compliqué que ça en a l’air !

C’est parti !

Objectif

L’idée est relativement simple, nous allons partir d’un fichier XML comprenant uniquement un RelativeLayout et ajouter un bouton en son centre.

Nous arriveront donc à un résultat équivalent à celui-ci :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:id="myRelativeLayout">
    <Button android:id="myButton" android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />
</RelativeLayout>

N’hésitez pas à le tester si vous ne visualisez pas bien le rendu final ;)

Comment y parvenir ?

Comme ça :

public class MaClasseIHM{
    private RelativeLayout myRelativeLayout;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        myRelativeLayout = (RelativeLayout)findViewById(R.id.myRelativeLayout);

        // C'est ici qu'on commence à créer le bouton
        Button myButton = new Button(this);

        // La classe LayoutParams permet de paramétrer notre élément d'interface (ici le bouton)
        // Ici la hauteur et la largeur
        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        // Ici on le centre !
        layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);

        // Et enfin on ajoute le bouton à notre RelativeLayout
        myRelativeLayout.addView(myButton, layoutParams);
    }
}

Vous avez à présent tout les éléments entre les mains pour faire des interfaces plus complexes.

Pour aller plus loin

Vous savez maintenant créer un bouton. En l’état ce n’est pas très utile mais ça peut rapidement le devenir si vous souhaitez en créer plusieurs. Par exemple, vous souhaitez créer une quinzaine de boutons ? Instanciez les dans une boucle et ajoutez les à un ArrayList pour en garde le contrôle.

Vous souhaitez maintenant créer une interface plus complexe qui se répètera (un formulaire par exemple) ? Créez alors une classe qui héritera d’un RelativeLayout et instanciez dedans tous vos éléments. Vous n’aurez plus qu’à instancier cette classe dans votre classe principale.

Conclusion

Je pense que nous avons fait le tour, vous pouvez maintenant créer n’importe quelle interface en Java. En cas de problème vous pouvez vous référer à la documentation ou bien directement poser des questions ici-même.

Laisser un commentaire

* Copy this password:

* Type or paste password here:

1,548 Spam Comments Blocked so far by Spam Free Wordpress


NOTE - Vous pouvez utiliser les éléments et attributs HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>