wiki android par frandroid

Optimiser ses layouts

De FrAndroid - Android docs.


Source de la traduction : http://android-developers.blogspot.com/2009/11/optimize-your-layouts.html


Il est facile d'écrire des interfaces utilisateurs pour les applications Android, mais il peut être difficile quelquefois de les optimiser. Le plus souvent, de grosses modifications faites à des layouts XML, comme changer le type de conteneur, mène à des inefficiences qui passent inaperçues.


Vous pouvez utiliser un outil du SDK, depuis sa version 3 (NdT : Android 1.5), appelé layoutopt, pour détecter automatiquement les problèmes les plus communs. Cet outil est pour le moment disponible uniquement en ligne de commande, et il est très facile d'utilisation - lancez juste un terminal, et utilisez la commande layoutopt avec en arguments une liste de dossier ou de fichiers XML à analyser :

$ layoutopt samples/
samples/compound.xml
  7:23 The root-level <FrameLayout/> can be replaced with <merge/>
  11:21 This LinearLayout layout or its FrameLayout parent is useless samples/simple.xml
  7:7 The root-level <FrameLayout/> can be replaced with <merge/>
samples/too_deep.xml
  -1:-1 This layout has too many nested layouts: 13 levels, it should have <= 10!
  20:81 This LinearLayout layout or its LinearLayout parent is useless
  24:79 This LinearLayout layout or its LinearLayout parent is useless
  28:77 This LinearLayout layout or its LinearLayout parent is useless
  32:75 This LinearLayout layout or its LinearLayout parent is useless
  36:73 This LinearLayout layout or its LinearLayout parent is useless
  40:71 This LinearLayout layout or its LinearLayout parent is useless
  44:69 This LinearLayout layout or its LinearLayout parent is useless
  48:67 This LinearLayout layout or its LinearLayout parent is useless
  52:65 This LinearLayout layout or its LinearLayout parent is useless
  56:63 This LinearLayout layout or its LinearLayout parent is useless
samples/too_many.xml
  7:413 The root-level <FrameLayout/> can be replaced with <merge/>
  -1:-1 This layout has too many views: 81 views, it should have <= 80! samples/useless.xml
  7:19 The root-level <FrameLayout/> can be replaced with <merge/>
  11:17 This LinearLayout layout or its FrameLayout parent is useless


Pour chaque fichier analysé, l'outil va indiquer la ligne de chaque tag (balise) qui pourrait potentiellement être optimisé. Dans certains cas, layoutopt va même vous offrir une solution. La version actuelle de layoutopt contient une douzaine de règles utilisées pour analyser vos fichiers de layout, et les versions futures en contiendront plus. Les prévisions futures pour cet outil prévoient la possibilité de créer et utiliser vos propres règles d'analyses, pour modifier automatiquement l'agencement avec du XML optimisé, et de l'utiliser depuis Eclipse et/ou depuis une interface indépendante.


Utilisateurs de Windows : pour démarrer layoutopt, ouvrez le fichier appelé layoutopt.bat depuis le dossier tools du SDK, et sur la dernière ligne, remplacez %jarpath% par -jar %jarpath%