Pages

samedi 18 août 2012

Utiliser les nouveautés de l’API Android sur les anciennes versions

A chaque nouvelle version de l’API, Google apporte des améliorations dans son API. La rétrocompatibilité est assurée mais on pourrait aller plus loin. Comment mettre en place des fonctionnalités sur son téléphone sous Android 2.2 qui ne sont apparues qu’à partir d’Android 3.x ou 4.x ?

Les ingénieurs de Google ont prévu le cas et fournissent des librairies pour vous simplifier le développement et essayer d’avoir le même rendu sur vos applications sur l’ensemble des plate-formes.

Comme exemple nous allons voir comment mettre en place une ActionBar et une SplitBar dans une application compatible Android 2.2.

Comment télécharger les librairies Android-support ?
Au sein d’Eclipse allez dans Window > Android SDK Manager pour lancer le manager.  Dans les extra sélectionnez Android Support package et cliquez sur Install package.


 L’installtion va télécharger les jars liés et des applications exemple dans le répertoire <sdk>/extras/android/support/ . On retrouve une librairie par montée de version.


Ensuite dans votre projet Android vous devez créer un répertoire libs au même niveau que les répertoires src/, res/, etc, et copier le jar correspondant aux fonctionnalités que vous voulez utiliser dans ce répertoire libs. Par exemple <sdk>/extras/android/support/v4/android-support-v4.jar comporte les fonctionnalités apportées dans la V4 de l'API. 

Ceci est très pratique pour ajouter des éléments simples rajoutés à l’API. Mais dans notre cas où l’on veut rajouter les éléments pour pouvoir naviguer de la même manière au sein de notre application quelque soit la version de l’OS, nous devrions écrire pas mal de code.

Profiter des exemples Google
Encore une fois je vous propose une solution assez simple. Afin de montrer un exemple concret à la communauté des développeurs Google créée chaque année une application en marge des Google I/O dont les sources sont disponibles sous GoogleCode sous http://code.google.com/p/iosched/.

Vous pouvez récupérer les sources via Git. Nous allons nous intéressé au projet librairie ActionBarSherlock disponible dans <rep iosched>\libprojects\abs que nous allons monter dans notre environnement de développement.
  • Allez dans File > Import… et sélectionnez Android > Existing Android Code Into Workspace 
  • Sélectionnez le projet télécharger et cliquez sur la case à cocher Copy projects into workspace

  • Vous pouvez vérifier dans les propriétés du projet que vous venez de récupérer, que ce dernier est défini comme un projet de librairie

  • Reliez ensuite votre projet à la librairie abs en allant dans les propriétés  et dans la partie Librairy cliquez sur le bouton Add… 

Comment adapter notre projet pour utiliser les classes fournies dans la librairie abs
Pour pouvoir utiliser une ActionBar dans une classe Activity changez l’héritage de votre classe pour hériter de com.actionbarsherlock.app.SherlockActivity plutôt que android.app.Activity

Cette classe fait office d’Adapter pour vous fournir les fonctionnalités attendues sur toutes les versions de l’OS.

La classe permettant de charger un menu est légèrement différente
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
      getSupportMenuInflater().inflate(R.menu.menumatchadder, menu);
      return true;
    }


Au lieu de
public boolean onCreateOptionsMenu(android.view.Menu menu) {
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.menu, menu);
      return true;
    }


De même la classe permettant de gérer les actions utilisateurs devra être reprise
public Boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item); 
au lieu de
public Boolean onOptionsItemSelected(android.view.MenuItem item); 

La dernière chose avant de pouvoir tester vos modifications est de changer le style utilisé par votre application. En effet la librairie abs utilise ses propres styles pour avoir le même rendu que ce que l’on retrouve sur les API récentes d’Android. Vous devez donc déclarer le style dans un fichier styles.xml situé dans le répertoire /res/values de votre projet. 
<style name="Theme.FeuilleDeMatch" parent="Theme.Sherlock.Light"/>

Et ensuite associer ce style à votre application ou les activités concernées dans le fichier AndroidManifest.xml.

Exemple
Vous pouvez retrouver un exemple complet sur Github https://github.com/javamind/FeuilleDeMatch

Aucun commentaire:

Enregistrer un commentaire

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.