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

Quelle est la différence entre les unités de mesure Android ?

  • px
  • dip
  • dp
  • sp
Solution

Extrait de la [Documentation du développeur Android] (http://developer.android.com/guide/topics/resources/more-resources.html#Dimension) :

  1. px Pixels - correspond aux pixels réels de l'écran.

  2. in Inches - correspond à la taille physique de l'écran.
    1 Inch = 2,54 centimètres

  3. mm Millimètres - basé sur la taille physique de l'écran.

  4. pt Points - 1/72 de pouce en fonction de la taille physique de l'écran.

  5. dp ou dip Pixels indépendants de la densité - une unité abstraite basée sur la densité physique de l'écran. Ces unités sont relatives à un écran de 160 dpi, donc un dp est un pixel sur un écran de 160 dpi. Le rapport dp/pixel change en fonction de la densité de l'écran, mais pas nécessairement en proportion directe. Note : Le compilateur accepte à la fois "dip&quot ; et "dp&quot ;, bien que "dp&quot ; soit plus cohérent avec "sp&quot ;.

  6. sp Pixels indépendants de l'échelle - c'est comme l'unité dp, mais elle est également mise à l'échelle par la préférence de taille de police de l'utilisateur. Il est recommandé d'utiliser d'utiliser cette unité lorsque vous spécifiez la taille des polices. pour la densité de l'écran et les préférences de l'utilisateur.

Extrait de Understanding Density Independence In Android :

+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size                    | 
+----------------+----------------+---------------+-------------------------------+
| ldpi           | 120 dpi        | 0.5 x 0.5 in  | 0.5 in * 120 dpi = 60x60 px   | 
+----------------+----------------+---------------+-------------------------------+
| mdpi           | 160 dpi        | 0.5 x 0.5 in  | 0.5 in * 160 dpi = 80x80 px   | 
+----------------+----------------+---------------+-------------------------------+
| hdpi           | 240 dpi        | 0.5 x 0.5 in  | 0.5 in * 240 dpi = 120x120 px | 
+----------------+----------------+---------------+-------------------------------+
| xhdpi          | 320 dpi        | 0.5 x 0.5 in  | 0.5 in * 320 dpi = 160x160 px | 
+----------------+----------------+---------------+-------------------------------+
| xxhdpi         | 480 dpi        | 0.5 x 0.5 in  | 0.5 in * 480 dpi = 240x240 px | 
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi        | 640 dpi        | 0.5 x 0.5 in  | 0.5 in * 640 dpi = 320x320 px | 
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit    | Description | Units Per     | Density     | Same Physical Size | 
|         |             | Physical Inch | Independent | On Every Screen    | 
+---------+-------------+---------------+-------------+--------------------+
| px      | Pixels      | Varies        | No          | No                 | 
+---------+-------------+---------------+-------------+--------------------+
| in      | Inches      | 1             | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| mm      | Millimeters | 25.4          | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| pt      | Points      | 72            | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| dp      | Density     | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+
| sp      | Scale       | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Vous trouverez également plus d'informations dans la [Google Design Documentation] (https://www.google.com/design/spec/layout/units-measurements.html#).

Commentaires (11)

Tout ce qui concerne ce sujet et la manière d'obtenir le meilleur support pour des écrans multiples de tailles et de densités différentes est très bien documenté ici :

  • [Prise en charge de plusieurs écrans][1]

Taille de l'écran
Taille physique réelle, mesurée par la diagonale de l&#8217écran. Pour des raisons de simplicité, Android regroupe toutes les tailles d'écran réelles en quatre catégories : 1. tailles généralisées : petit, normal, grand et très grand.

Densité de l'écran
Le nombre de pixels dans une zone physique de l'écran. écran ; généralement appelé dpi (dots per inch). Par exemple, une "low&quot ; density screen a moins de pixels dans une zone physique donnée, par rapport à un écran à "densité normale&quot ; ou "haute&quot ;. Par souci de simplicité, Android regroupe toutes les densités d'écran réelles en six densités générales : basse densité, haute densité et haute densité. généralisées : faible, moyenne, élevée, extra-haute, extra-extra-haute et extra-extra-extra-haute. extra-extra-extra-haut.

Orientation
L'orientation de l'écran du point de vue de l'utilisateur. vue de l'utilisateur. Il s'agit soit d'un paysage, soit d'un portrait, ce qui signifie que le rapport d'aspect de l'écran est soit large, soit étroit. Le rapport hauteur/largeur de l'écran est respectivement large ou haut. Sachez que non seulement Sachez que non seulement les différents appareils fonctionnent dans des orientations différentes par défaut, mais que l'orientation de l'écran est également différente. par défaut, mais l'orientation peut changer au moment de l'exécution lorsque l'utilisateur fait tourner l'appareil. fait tourner l'appareil.

Résolution
Le nombre total de pixels physiques sur un écran. d'un écran. Lors de la prise en charge de plusieurs écrans, les applications ne ne travaillent pas directement avec la résolution ; les applications ne doivent se préoccuper Les applications doivent se préoccuper uniquement de la taille et de la densité de l'écran, comme spécifié par les groupes généralisés de taille et de densité. généralisées de taille et de densité.

Pixel indépendant de la densité (dp)
Une unité de pixel virtuelle virtuelle que vous devez utiliser lors de la définition de la mise en page de l'interface utilisateur, pour exprimer les dimensions de la mise en page ou la position dans l'espace. les dimensions ou la position de la disposition d'une manière indépendante de la densité. Le pixel indépendant de la densité est équivalent à un pixel physique sur un écran de 160 dpi, qui est la densité de base supposée par le système pour un écran de taille moyenne. "moyenne&quot ; densité. Au moment de l'exécution, le système gère de manière transparente toute mise à l'échelle des unités dp, si nécessaire, en fonction de la densité réelle de l'écran utilisé. La conversion des unités dp en pixels d'écran est simple : px = dp * (dpi / 160). Par exemple, sur un écran de 240 dpi, 1 dp équivaut à 1,5 pixel physique. Vous devez toujours utiliser les unités dp lorsque Vous devez toujours utiliser les unités dp lorsque vous définissez l'interface utilisateur de votre application, afin de garantir l'affichage correct de votre interface utilisateur sur des écrans de densité différente. sur des écrans de différentes densités.

Si vous envisagez sérieusement de développer une application Android pour plus d'un type d'appareil, vous devriez avoir lu au moins une fois le document sur le développement du support des écrans. En outre, il est toujours bon de connaître le nombre réel d'appareils actifs ayant une configuration d'écran particulière.

  • Tailles et densités d'écran][2]

[1] : http://developer.android.com/guide/practices/screens_support.html [2] : http://developer.android.com/resources/dashboard/screens.html

Commentaires (5)

Je vais développer plus en détail comment exactement dp est converti en px :

  • Si elle est exécutée sur un périphérique mdpi, une image de 150 x 150 px occupera 150 * 150 dp d'espace écran.
  • Si elle est exécutée sur un périphérique hdpi, une image de 150 x 150 px occupera 100 * 100 dp d'espace d'écran.
  • Si elle est exécutée sur un périphérique xhdpi, une image de 150x150 px occupera 75 * 75 dp d'espace d'écran.

Dans l'autre sens : disons que vous voulez ajouter une image à votre application et que vous avez besoin qu'elle remplisse un contrôle de 100 * 100 dp. Vous devrez créer des images de taille différente pour les tailles d'écran prises en charge :

  • Image 100 * 100 px pour mdpi
  • Image 150 * 150 px` pour hdpi
  • Image de 200 * 200 px` pour xhdpi
Commentaires (4)