Lorsque vous avez une vue bien conçue qui répond aux gestes et aux transitions entre les états, assurez-vous que la vue s'exécute rapidement. Pour éviter une interface utilisateur lente ou saccadée pendant la lecture, assurez-vous que les animations s'exécutent de manière constante à 60 images par seconde.
Accélérer l'affichage
Pour accélérer l'affichage, éliminez le code inutile des routines fréquemment appelées. Commencez par onDraw(), qui vous offre le meilleur retour sur investissement. En particulier, éliminez les allocations dans onDraw(), car elles peuvent entraîner un garbage collection qui provoque un bégaiement. Allouez des objets lors de l'initialisation ou entre les animations. N'effectuez jamais d'allocation pendant l'exécution d'une animation.
En plus de rendre onDraw() plus léger, assurez-vous qu'il est appelé le moins souvent possible. La plupart des appels à onDraw() sont le résultat d'un appel à invalidate(). Éliminez donc les appels inutiles à invalidate().
Le parcours des mises en page est une autre opération très coûteuse. Lorsqu'une vue appelle requestLayout(), le système d'interface utilisateur Android parcourt l'intégralité de la hiérarchie des vues pour déterminer la taille de chaque vue. S'il trouve des mesures contradictoires, il peut parcourir la hiérarchie plusieurs fois. Les concepteurs d'UI créent parfois des hiérarchies profondes d'objets ViewGroup imbriqués. Ces hiérarchies de vues profondes entraînent des problèmes de performances. Par conséquent, rendez vos hiérarchies de vues aussi peu profondes que possible.
Si votre UI est complexe, envisagez d'écrire un ViewGroup personnalisé pour sa mise en page.
Contrairement aux vues intégrées, votre vue personnalisée peut faire des hypothèses spécifiques à l'application sur la taille et la forme de ses enfants, et ainsi éviter de les parcourir pour calculer les mesures.
Par exemple, si vous avez un ViewGroup personnalisé qui n'ajuste pas sa propre taille pour s'adapter à toutes ses vues enfants, vous évitez la surcharge liée à la mesure de toutes les vues enfants. Cette optimisation n'est pas possible si vous utilisez les mises en page intégrées qui s'adaptent à un large éventail de cas d'utilisation.