## Réduire l'overdraw ### Identifiants // TODO ### Catégories | Cycle de vie | Tiers | Responsable | |:---------:|:----:|:----:| | 3. Réalisation (fabrication / développement) | Utilisateur/Terminal | Architecte Logiciel/Développeur | ### Indications | Degré de priorité | Mise en oeuvre | Impact écologique | |:-------------------:|:-------------------------:|:---------------------:| | 4 | 4 | 4 | |Ressources Economisées | |:----------------------------------------------------------:| | Processeur | ### Description Un pixel a l'écran peut être dessiné ("Draw") plusieurs fois durant le processus chargé d'afficher l'interface exacte à l'écran. Le fait de redessiner plusieurs fois un pixel est appelé "Overdraw". Pour réduire le nombre de Redraw et ainsi soulager le processeur, il convient d'appliquer ce genre de pratique : * Ne pas ajouter un fond a un layout via la propriété `background` si celui-ci est ensuite recouvert complétement par ses enfants. * Réduire l'imbrication de layout. Par exemple utiliser un `ConstraintLayout` plutôt que plusieurs `LinearLayout` imbriqués permet d'éviter ce genre de situation. * Réduire le nombre de composants utilisant la transparence (propriété `alpha`). En effet, pour afficher un pixel en appliquant une valeur d'alpha, le processeur dessine d'abord le pixel sans alpha, avant de redessiner le pixel en appliquant le bon calcul pour la couleur. ### Exemple * Pour afficher un texte en gris, plutôt que de définir la couleur du composant `TextView` en noir, et de lui appliquer un niveau de transparence via le paramètre `alpha`, définir plutôt la couleur du texte en gris directement. Pour aller plus loin : [Overdraw - Documentation](https://developer.android.com/topic/performance/rendering/overdraw) ### Principe de validation | Le nombre ... | est inférieur ou égal à | |-------------------|:-------------------------:| | de modifications n'affectant pas le layout et occasionnant un repaint (ex: color, background, visibility) | 1 |