47 lines
2.1 KiB
Markdown
47 lines
2.1 KiB
Markdown
## Réduire l'overdraw
|
|
|
|
### Identifiants
|
|
|
|
|
|
| V1 |
|
|
|:--:|
|
|
| 20 |
|
|
|
|
### 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 |
|