News originale publiée le 24 avril 2012
La popularité de jQuery vient d'un simple fait : il réduit significativement la quantité de code nécessaire pour réaliser des tâches asynchrones et manipuler le DOM. Le nouveau projet AQuery cherche à réaliser la même chose pour les développeurs Android. Pour vous montrer ce que peut donner Android Query pour votre développement d'UI, nous vous proposons un exemple provenant de leur site.
Avant
Après
Android Query simplifie l'écoute d'évènements. Plutôt que d'implémenter une interface ou de créer une classe anonyme, il suffit de s'assurer de ne pas faire d'erreur dans le nom de la méthode qui gère l'évènement.
aq.id(R.id.button).clicked(this, "buttonClicked");
La fragmentation due aux différentes tailles d'écran et de version d'API peuvent rendre difficile de tirer le meilleur de chaque device. Avec Android Query, certains de ces problèmes sont résolus par des wrappers au-dessus de l'API d'Android. Par exemple, la fonction aq.hardwareAccelerated11();
va détecter si le device supporte l'API 11 qui permet d'utiliser l'accélération matériel et l'activer si c'est possible.
Quand on travaille avec différentes tailles d'écrans, on commence souvent avec une tablette puis on retire et réorganise les contrôles jusqu'à ce que cela soit adapté à un téléphone. Normalement, cela veut dire que vous avez à vérifier l'arbre des composants visibles pour savoir quels controles sont réellement créés depuis le fichier AXML avant d'essayer de le manipuler.
Android Query vous permet d'éviter toutes les vérifications en faisant le chaînage conditionnels des méthodes. Prenons un exemple avec ce bout de code :
aq.id(R.id.address).text(name).background(R.color.red).textColor(R.color.black).enabled(true).visible().clicked(this, "addressClicked");
Si le contrôle "address" n'existe pas, tous les setters et event handlers qui suivent vont simplement devenir inopérant. Si cela peut rendre le debugging un peu plus difficile, cela réduit énormément le nombre de lignes de code nécessaire dans votre méthode onCreate.
AQuery vous permet également de rendre vos appels HTTP asynchrones très simples. Il inclut un support pour les requêtes POST simples et multi-part et peut accepter des données binaires, JSON, HTML et XML. Un système séparé est prévu pour les images. Il est possible en une seule ligne de télécharger une image, la mettre en cache et la charger dans un contrôle.