Fév 24

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.

Fév 15

Débuter le développement pour Android – Le poste de travail

Comme je suis en train de débuter le développement pour des applications Android, et que c’est un sujet fort prisé par bon nombre de développeur qui ont une dose de geekitude dans les veines, je vais tâcher de faire part de mon expérience sur le sujet à travers divers post sur ce blog.

Cette première partie est déjà un écart par rapport au sujet initial, car il ne parle pas directement de développement, mais de préparer son poste de travail à faire du développement. En effet, il est rare de nos jours de débuter un développement from scratch, sans outils, avec uniquement un éditeur de texte et un compilateur en ligne de commande (rare et suicidaire!). D’autant plus que la communauté Android fourni pléthore d’outils et de documentation pour automatiser la plupart des tâches nécessaires à la création d’une application Android.

Le kit de développement

La première chose à faire est d’installer le SDK (Software Development Kit) Android, qui est disponible à l’adresse suivante : http://developer.android.com/sdk/index.html. La description est assez bien faite pour m’éviter d’avoir à décrire le processus d’installation.

L’interface de développement

L’outil de prédilection pour développer des applications Android est l’IDE Eclipse. Celui est téléchargeable ici. Celui-ci est majoritairement utilisé pour faire du développement Java, ce qui est parfait car c’est le langage utilisé pour écrire des applications Android.
La communauté Android propose un plugin pour Eclipse permettant de prendre en charge la plupart des tâches liées au développement Android : génération de code, génération de fichier de configuration, packaging, transformation en application Dalvik, gestion du SDK et lancement des terminaux virtuels (et bien d’autres encore). L’installation de ce plugin est décrit sur la page dédiée.

Le code source d’Android

Dernier point pour simplifier le développement d’application Android avec Eclipse : récupérer le code source d’Android. Ce code ne sera pas utilisé pour être lu exhaustivement (sinon vous commencerez votre application Android au moment où l’informatique sera passé de mode, et que l’espèce humaine sera rayée de la surface de la terre par les robots), mais il permettra à Eclipse d’extraire les commentaires des différentes méthodes utilisées, et éventuellement de naviguer à travers le code si vous avez un problème et que vous accusez inutilement la plateforme de bugs car elle ne fait pas tourner votre application parfaite.
Le code source d’Android est hébergé sur un serveur GIT dédié. GIT est un gestionnaire de version distribué, permettant de partager du code entre plusieurs développeurs (en gros). Pour récupérer le code source d’Android, il faut donc tout d’abord disposer des outils permettant de dialoguer avec le serveur.
Pour les systèmes Linux et Mac, la marche à suivre est expliqué directement sur le site des sources d’Android.
Pour les windowsiens, il faut :

  • soit installer l’application msysgit et accéder à l’URL GIT git://android.git.kernel.org/platform/frameworks/base.git
  • soit installer l’application Cygwin (permettant d’avoir la plupart des utilitaires de base d’Unix sur Windows) avec à minima les paquets suivants : automake, bison, curl, flex, gcc, git, gnupg, python, zip (merci à ce site pour l’info), et ensuite utiliser la même méthode que pour Linux.

Ensuite, il est nécessaire de lier le code source télécharger aux librairies qu’utilise Eclipse pour la compilation.

Et voilà, vous diposez maintenant d’un poste de travail parfait pour le développement Android ! En attendant le prochain post, je vous laisse avec la documentation très fournie d’Android.

Déc 08

Application Android pour contrôler un robot Lego

Quelle ne fut pas ma joie de découvrir, au détour d’une page web, l’existence d’une application Android permettant de contrôler la brique Lego Mindstorms NXT par Bluetooth ! Cette application, Minddroid, disponible dans le Android Market, permet de diriger un robot Lego à partir des accéléromètres du mobile.

En dirigeant l’extrémité du mobile vers le bas, le robot va vers l’avant. En le dirigeant vers le haut, il recule. La gauche et la droite le font tourner dans la direction correspondante. Simple. Et magique à la fois.

Que demander de plus ? Que l’application soit open source. Et là … c’est le cas. Pardonnez mes larmes, c’est l’émotion.

La news sur le site Lego et le repository GIT http://github.com/NXT/LEGO-MINDSTORMS-MINDdroid