mercredi 9 novembre 2011

Faire un menu et sous-menu



Après quelques jours de répit nous voilà parti pour un nouveau tuto plutôt simple mais terriblement utile pour faire une application complète. Nous allons apprendre à réaliser des menus et sous-menus, assez pratique pour enrichir vos applications d’options.

Alors comme d’habitude créez un nouveau projet (moi j’ai utilisé Android 1.6), et direction le dossier layout car l’interface graphique est comme tout le temps créée grâce aux fichiers XML.

Code XML

Créez un fichier menu.xml dans le dossier layout. Nous allons créer un premier menu contenant les itemsOptions et Quitter. Lorsque l’on cliquera sur Quitter, on sortira de l’application et lorsque l’on cliquera surOptions, on aura un sous-menu qui s’affichera avec les items Favoris et Stats. Je vous propose donc le code suivant :
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 
<item android:id="@+id/option" 
      android:title="Options"
      android:icon="@drawable/option">
 
     <menu android:id="@+id/sousmenu">
  <item android:id="@+id/favoris"
        android:title="Favoris"   /> 
 
  <item android:id="@+id/stats"
        android:title="Stats"  />
     </menu>
</item>
 
<item android:id="@+id/quitter" 
     android:title="Quitter"
     android:icon="@drawable/quit" />
</menu>
Vous remarquerez que j’affecte un petit icône pour chaque item du menu mais pas du sous-menu. Tout simplement parce que dans le sous-menu, les icônes ne sont pas supporté par Android (« Sub menus do not support item icons, or nested sub menus. » via). La partie XML est terminée (oui c’est court et simple mais bon… ), passons désormais à la partie JAVA qui sera aussi courte et simple !

Code JAVA

Comme d’habitude, le code est commenté mais si ce n’est pas clair, laissez un commentaire et je vous aiderai du mieux que je peux.
package com.tutomobile.android.menu;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
 
public class Tutoriel10_Android extends Activity {
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
 
    }
 
    //Méthode qui se déclenchera lorsque vous appuierez sur le bouton menu du téléphone
    public boolean onCreateOptionsMenu(Menu menu) {
 
        //Création d'un MenuInflater qui va permettre d'instancier un Menu XML en un objet Menu
        MenuInflater inflater = getMenuInflater();
        //Instanciation du menu XML spécifier en un objet Menu
        inflater.inflate(R.layout.menu, menu);
 
        //Il n'est pas possible de modifier l'icône d'entête du sous-menu via le fichier XML on le fait donc en JAVA
     menu.getItem(0).getSubMenu().setHeaderIcon(R.drawable.option_white);
 
        return true;
     }
 
       //Méthode qui se déclenchera au clic sur un item
      public boolean onOptionsItemSelected(MenuItem item) {
         //On regarde quel item a été cliqué grâce à son id et on déclenche une action
         switch (item.getItemId()) {
            case R.id.option:
               Toast.makeText(Tutoriel10_Android.this, "Option", Toast.LENGTH_SHORT).show();
               return true;
            case R.id.favoris:
                Toast.makeText(Tutoriel10_Android.this, "Favoris", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.stats:
                Toast.makeText(Tutoriel10_Android.this, "Stats", Toast.LENGTH_SHORT).show();
                return true;
           case R.id.quitter:
               //Pour fermer l'application il suffit de faire finish()
               finish();
               return true;
         }
         return false;}
 
}
Voilà, c’est aussi simple que ça ! Maintenant, lancez votre application et appuyez sur le bouton menu du téléphone vous devriez voir quelque chose comme ceci :

Si vous cliquez sur l’item « Options » le sous-menu s’affiche :


0 commentaires:

Enregistrer un commentaire

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free Android website | Bloggerized by wassim El mririe - Ramzi Essid | TO Best Web Host