Quelle est la différence entre px, dp, dip et sp sur Android ?

Lorsque l'on développe une application pour le système d'exploitation Android, il est nécessaire de placer les éléments de son interface dans l'écran. Pour cela, il existe différentes unités de mesure possible afin d'adapter l'affichage selon nos choix. Le SDK d'Android accepte 6 unités de mesure : 4 unités de mesure physique et 2 unités dont la taille peut varier suivant l'appareil.

Comme toutes les interfaces de programmation, le SDK accepte le pixel comme unité de mesure. 1px correspond à un pixel sur l'écran.
Le pouce (inch en anglais) est aussi une unité de mesure possible. 1 pouce (1 in) correspond à environ 2,54 centimères. Cette unité est donc liée à la taille physique de l'écran (plus celui-ci est grand, plus il y aura de pouces visibles d'un seul coup d'oeil).
Il existe deux autres unités de mesure physiques : le millimètre (mm) et le point (pt). 72 points correspondent à 1 pouce.

On peut également utiliser deux unités de mesure abstraites. Le dip ou dp (pour Density-independant Pixel) est une unité de mesure qui se base sur la densité physique de l'écran. Cette unité est relative à un écran d'une densité de 160 dpi. La densité correspond au ratio entre la résolution d'un écran et sa taille physique. Cela signifie qu'un dp correspond à un pixel sur un écran ayant une densité de 160 dpi. L'avantage de cette unité est qu'elle permet de gérer plus facilement une grande variété d'écrans. En effet, Android est utilisé sur un très grand nombre de périphériques différents et il existe donc de nombreuses dimensions d'écran possibles. Cette notion de densité permet de regrouper les écrans en 6 catégories différentes selon la densité, ce qui facilite le développement. Le compilateur Android accepte les deux écritures dp et dip.
La dernière unité de mesure est le sp, pour Scale-independant Pixels. Elle se base sur la densité physique mais aussi sur la préférence de l'utilisateur en terme de taille de police. Elle est donc utilisée pour spécifier la taille des textes affichés à l'écran.

Android