Vidéo « Sticky GUIs in Android » – novembre 2011 – San Francisco Android User Group

Chet Haase, équipe Android, Google

Pour la deuxième partie de la présentation de la conférence au San Francisco Android
User Group de novembre 2011, Romain Guy et Chet Haase présentaient les différentes parties pour optimiser l’Interface Utilisateur, notamment sur les points suivants:

Views, Graphics

  • Résolution d’écran: fournir les ressources graphiques pour les résolutions cibles, sinon le système ira prendre les ressources par défaut basé sur du hdpi (320×480) et redimensionnera l’image qui pourrait donner un résultat flou
  • Cibler la bonne profondeur de couleur (16 / 32 bits). Par défaut, à partir de gingerbread, les images son gérées en 32 bits.
  • Choisir le bon mode de couleur: RGB_4444 (déprécié), RGB_565 (par défaut avant gingerbread), RGB_8888 (par défaut depuis gingerbread avec la couche alpha), voir le post de Romain Guy
  • Optimiser l’utilisation de la douche alpha. Par exemple dans la barre de notification, il est plus efficace d’écrire un texte en gris, au lieu d’écrire un texte blanc avec une couche alpha semi transparente.
  • Utiliser l’outil en ligne Android Asset Studio pour générer les icônes de notification, les onglets.  Les différents répertoires par résolution sont aussi générés.

Layout

  • Suivre les guidelines
  • Etre cohérent avec l’Interface Utilisateur des plateformes cibles (gingerbread, Ice Scream Sandwich). Prendre exemple sur les applications système comme gmail.
  • Utiliser les ActionBar à partir de honeycomb ou ActionBarSherlock pour la rétro compatibilité avant honeycomb
  • Utiliser les ViewPager (fourni dans le support library) pour naviguer horizontalement entre les onglets



Animation

  • Choisir la bonne vitesse en fonction de la situation et de la distance à parcourir
  • Eviter de choisir une vitesse trop lente ou rapide, se rapprocher le plus possible d’un mouvement naturel
  • Etre simple: ne pas superposer les animations, mais plutôt les séparer
  • Avoir une bonne raison d’utiliser une animation. Ex: pour montrer qu’on entre ou sort d’un composant
  • Analyser les animations en les profilant car les animations ont un coût de calcul

Performance

  • Etant le coût d’un Garbage Collector (ramasse miette qui nettoie les objets qui ne sont plus utilisés), éviter l’allocation d’objets dans les méthodes critiques et souvent appelées (ex: 60 fois par seconde): draw, measure, layout, touch events (onInterceptTouchEvent(), onTouchEvent())
  • Réutiliser les objets volumineux : Paint, Canvas, Rect, Bitmap, Matrix, int[]
  • Bitmaps: utiliser la même configuration que les écrans cibles (images 32 bits pour écran 32 bits)
  • Bitmaps: pré-dimensionner si possible (même si l’accélération matérielle est très rapide pour le redimensionnement des images)
  • Redessiner seulement la partie graphique à mettre à jour. Ex: sur le launcher/Home pendant drag and drop d’un racourci, re-dessiner seulement un petit rectangle autour de l’icône qui est rafraîchi à chaque touch event et non tout l’écran.
  • Faire attention à la couche alpha des images, car le système utilise un Buffer intermédiaire pour gérer les couches alpha des différents Views.
  • Possibilité d’utiliser le processeur graphique GPU avec OpenGL, renderscript ou hardware canvas (hardwareAccelerated=true)
  • Utiliser les outils mis à disposition: profiling (traceview), analyse de la mémoire (allocation tracker), optimisation de layout (layoutopt), debug de l’Interface Utilisateur (hierarchyviewer), génération de ressources (Android Asset Studio) et recherche d’erreurs potentielles (Lint).

Conclusion
Après avoir présenté les nouvelles fonctionnalités de la dernière version d’Android, les deux ingénieurs Android de Google ont rappelé certains points importants que les développeurs devraient prendre en considération lorsqu’ils construisent des applications avancées.

Pendant les échanges, ils ont pu aussi expliquer oralement quelques trucs et astuces d’optimisation qui n’étaient même pas encore expliqués dans des articles.

Enfin, grâce à l’interactivité de la conférence, les ingénieurs ont pu répondre et éclaircir certaines interrogations des développeurs présents.

Vous voulez présenter un sujet sur Ice Scream Sandwich dans une prochaine conférence, contactez-nous.


Quang-Hai PHAN

Développeur indépendant. A travaillé sur divers projets Web et Android. twitter (@parisfreelance), Google+ , linkedin, plancast ou blog.