android unité to - Quelle est la difference entre “px”, “dip”, “dp” et “sp”?



15 Answers

Vous trouverez ici une description détaillée de tout ce qui a trait à cela et à la meilleure prise en charge de plusieurs écrans de tailles et de densités différentes:

Taille de l'écran
Taille physique réelle, mesurée en diagonale de l'écran. Pour plus de simplicité, Android regroupe toutes les tailles d'écran réelles en quatre tailles généralisées: petite, normale, grande et très grande taille.

Densité d'écran
La quantité de pixels dans une zone physique de l'écran; généralement appelé dpi (points par pouce). Par exemple, un écran de densité "basse" a moins de pixels dans une zone physique donnée, par rapport à un écran de densité "normale" ou "haute". Pour des raisons de simplicité, Android regroupe toutes les densités d’écran réelles en six densités généralisées: faible, moyenne, élevée, très haute, extra-très haute et extra-extra-très haute.

Orientation
L'orientation de l'écran du point de vue de l'utilisateur. Il s’agit d’un paysage ou d’un portrait, ce qui signifie que le format de l’écran est large ou grand. Sachez que non seulement différents périphériques fonctionnent par défaut dans différentes orientations, mais que l'orientation peut changer lors de l'exécution lorsque l'utilisateur fait pivoter le périphérique.

Résolution
Le nombre total de pixels physiques sur un écran. Lors de l'ajout de la prise en charge de plusieurs écrans, les applications ne fonctionnent pas directement avec la résolution. les applications ne doivent concerner que la taille et la densité de l'écran, comme spécifié par les groupes de taille et de densité généralisés.

Pixel indépendant de la densité (dp)
Unité de pixel virtuelle à utiliser lors de la définition de la disposition de l'interface utilisateur, pour exprimer les dimensions ou la position de la disposition de manière indépendante de la densité. Le pixel indépendant de la densité est équivalent à un pixel physique sur un écran de 160 ppp, ce qui correspond à la densité de base supposée par le système pour un écran de densité "moyenne". Au moment de l'exécution, le système gère de manière transparente toute mise à l'échelle des unités dp, 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 est égal à 1,5 pixel physique. Vous devez toujours utiliser les unités dp lors de la définition de l'interface utilisateur de votre application, afin de garantir un affichage correct de votre interface utilisateur sur des écrans de densités différentes.

Si vous souhaitez vraiment développer une application Android pour plusieurs types d'appareils, vous devez avoir lu le document de développement de la prise en charge des écrans au moins une fois. De plus, il est toujours utile de connaître le nombre réel de périphériques actifs dotés d'une configuration d'écran particulière.

cm 108 programmatically

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

  • px
  • tremper
  • dp
  • sp



px Pixels - le point par échelle correspond aux pixels réels à l'écran.

en pouces - basé sur la taille physique de l'écran.

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

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

dp Density - independent Pixels - unité abstraite basée sur la densité physique de l'écran. Ces unités étant relatives à un écran de 160 dpi, un dp correspond à un pixel sur un écran de 160 dpi. Le rapport dp sur pixel changera avec la densité de l'écran, mais pas nécessairement proportionnellement. Remarque: Le compilateur accepte à la fois dip et dp , bien que dp soit plus cohérent avec sp .

Sp -Scale-independent Pixels - Ceci est similaire à l'unité dp , mais il est également mis à l'échelle en fonction de la préférence de taille de police de l'utilisateur. Il est recommandé d’utiliser cet appareil lors de la définition des tailles de police afin qu’elles soient ajustées en fonction de la densité de l’écran et des préférences de l’utilisateur.

Prenons l'exemple de deux écrans de même taille mais dont l'un a une densité d'écran de 160 dpi (points par pouce, c'est-à-dire pixels par pouce) et l'autre de 240 dpi.

                          Lower resolution   screen          Higher resolution, same size
Physical Width                      1.5 inches                        1.5 inches
Dots Per Inch (“dpi”)               160                               240
Pixels (=width*dpi)                 240                               360
Density (factor of baseline 160)    1.0                               1.5

Density-independent Pixels          240                               240
(“dip” or “dp” or “dps”)

Scale-independent pixels 
 (“sip” or “sp”)                  Depends on user font size settings    same



dp is dip . Utilisez-le pour tout (marge, remplissage, etc.).

Utilisez sp pour {text-size} uniquement.

Pour obtenir la même taille sur différentes densités d'écran, Android convertit ces unités en pixels au moment de l'exécution. Il n'y a donc pas de calculs compliqués à faire.

Voyez la différence entre px , dp et sp sur différentes tailles d'écran.

Source: Programmation Android: Le Guide du Big Nerd Ranch




Définitions

px ou point est un pixel sur l'écran physique.

Les dpi sont des pixels par pouce sur l'écran physique et représentent la densité de l'affichage.

Android donne des noms d'alias à plusieurs densités

  • ldpi (faible) ~ 120dpi
  • mdpi (moyenne) ~ 160dpi
  • hdpi (haute) ~ 240dpi
    • la plupart des appareils en 2015 sont ici
  • xhdpi (très haut) ~ 320dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (extra-extra-high) ~ 480dpi
    • Nexus 5
  • xxxhdpi (extra-extra-extra-high) ~ 640 dpi

dip ou dp sont des pixels indépendants de la densité , c'est-à-dire qu'ils correspondent à plus ou moins de pixels en fonction de la densité physique.

  • 1dp = 1px sur mdpi

sp ou sip est un pixel indépendant de l'échelle . Ils sont mis à l’échelle lorsque l’option Texte large est activée dans Paramètres > Accessibilité.

  • 1sp = 1dp
  • 1sp = 1.2dp avec accessibilité Texte large

Quoi utiliser?

Utilisez sp pour la taille du texte.

Utilisez dp pour tout le reste.




Fondamentalement, le seul moment où px s'applique est d'un px, et c'est si vous voulez exactement un pixel à l'écran, comme dans le cas d'un diviseur:

Sur> 160 dpi, vous pouvez obtenir 2-3 pixels,

Sur> 120 dpi, il est arrondi à 0.




Où utiliser quoi & relation entre px & dp?

Pixel indépendant de la densité (dp)

Unité de pixel virtuelle à utiliser lors de la définition de la disposition de l'interface utilisateur, pour exprimer les dimensions ou la position de la disposition de manière indépendante de la densité. Comme décrit ci-dessus, le pixel indépendant de la densité est équivalent à un pixel physique sur un écran de 160 dpi, ce qui correspond à la densité de base supposée par le système pour un écran de densité "moyenne". Au moment de l'exécution, le système gère de manière transparente toute mise à l'échelle des unités dp, 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 est égal à 1,5 pixel physique. Vous devez toujours utiliser les unités dp lors de la définition de l'interface utilisateur de votre application, afin de garantir un affichage correct de votre interface utilisateur sur des écrans de densités différentes.

Comprendre le pixel en dp et inversement est essentiel (en particulier pour donner des valeurs de dp exactes à l'équipe de création)

dp = px * 160 / dpi

MDPI = 160 dpi || Therefore, on MDPI 1 px = 1 dp
For example, if you want to convert 20 pixel to dp, use the above formula,
dp = 20 * 160 / 160 = 20.
So, 20 pixel = 20 dp.

HDPI = 240 dpi - So, on HDPI 1.5 px = 1 dp
XHDPI = 320 dpi - So, on XHDPI 2 px = 1 dp
XXHDPI = 480 dpi - So, on XXHDPI 3 px = 1 dp

For example, let us consider Nexus 4.
If 24 pixels to be converted to dp and if it is a Nexus 4 screen, developers can
convert it to dp easily by the following calculation :
dp = 24 * 160 / 320 = 12 dp
Screen dimension:
768 x 1280 pixel resolution (320 ppi or 320dpi)
Optional (screen size):
 4.7" diagonal
  • Essayez d'obtenir toutes les valeurs de pixels en nombres pairs de l'équipe de création. Sinon, la perte de précision se produira en multipliant par 0.5.

px

C'est expliqué ci-dessus. Essayez d'éviter dans les fichiers de mise en page. Mais il existe certains cas, où px est requis. par exemple, la ligne de séparation ListView. px est préférable ici pour donner une ligne d'un pixel comme diviseur pour toutes les résolutions d'écran.

sp

Utilisez sp pour les tailles de police. Ensuite, seule la police à l'intérieur de l'application changera en même temps que la taille des polices du périphérique (c'est-à-dire Affichage -> Polices sur le périphérique). Si vous souhaitez conserver une police de taille statique dans l'application, vous pouvez indiquer la dimension de la police dans dp. Dans un tel cas, cela ne changera jamais. Les développeurs peuvent obtenir une telle exigence pour certains écrans spécifiques. Pour cela, ils peuvent utiliser dp au lieu de sp. Dans tous les autres cas, sp est recommandé.




Tout ce qui concerne la taille et l'apparence du texte doit utiliser sp ou pt . Considérant que tout ce qui concerne la taille des contrôles, les dispositions, etc. doit être utilisé avec dp .

Vous pouvez utiliser dp et dip à sa place.




sp = pixel indépendant de l'échelle

dp = dip = pixels indépendants de la densité

dpi = points par pouce

Nous devrions éviter d'utiliser sp .

Nous devrions utiliser dp pour prendre en charge plusieurs écrans.

Android prend en charge différentes résolutions d'écran

  • ldpi (bas) ~ 120 dpi
  • mdpi (moyen) ~ 160 dpi
  • hdpi (haut) ~ 240 dpi
  • xhdpi (très haut) ~ 320 dpi
  • xxhdpi (extra-extra-high) ~ 480 dpi
  • xxxhdpi (extra-extra-extra-high) ~ 640 dpi

Un périphérique ldpi de 120 dp a 120 pixels en taille de 1 pouce.

De même pour les autres densités ...

En tant qu’ingénieurs logiciels, nous devrions utiliser cette formule de conversion

pixel = dp * (densité / 160)

Ainsi, 1 dp du périphérique 240 dpi aura = 1 * (240/160) = 3/2 = 1,5 pixels.

Et 1 dp du périphérique 480 dpi aura = 1 * (480/160) = 3 pixels.

En utilisant ces connaissances de 1,5 et 3 pixels, un ingénieur logiciel peut concevoir des dispositions pour différentes densités.

Pour vérifier les paramètres d'écran de tout périphérique:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

Toast.makeText(
    this,
    "4:" + metrics.heightPixels + "," + metrics.density + ","
    + metrics.densityDpi, Toast.LENGTH_LONG).show();



dpi -

  • Points par pouces
  • Mesurer la densité de pixels de l'écran.

px - pixel

  • Pour cartographier les pixels de l'écran

pt - points

  • Environ 1/72 de pouce, en ce qui concerne la taille de l'écran physique.

pouces - par rapport à la taille de l'écran physique (1 pouce = 2,54 cm).

mm-millimètre - en ce qui concerne la taille de l'écran physique.

sp - pixel indépendant de l'échelle.

  • Basé sur la préférence de taille de police de l'utilisateur.
  • La police doit être en 'sp'.

trempette -

  • dip == dp
  • Pixel indépendant de la densité.
  • Cela varie en fonction de la densité de l'écran.
  • En écran 160 dpi, 1 dp = 1 pixel.
  • Utilisez dp sauf la taille de la police.

En standard, dp et sp sont utilisés. sp pour la taille de la police et dp pour tout le reste.

Formule de conversion d'unités:

px = dp * (dpi / 160);

Density Bucket -> Screen Display => 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  



Voici la formule utilisée par Android:

px = dp * (dpi / 160)

Où dpi est l'une des densités d'écran suivantes. Pour une liste de toutes les densités possibles, cliquez ici.

Il définit les constantes "DENSITY_ *".

  • ldpi (faible) ~ 120dpi
  • mdpi (moyenne) ~ 160dpi
  • hdpi (haute) ~ 240dpi
  • xhdpi (très haut) ~ 320dpi
  • xxhdpi (extra-extra-high) ~ 480dpi
  • xxxhdpi (extra-extra-extra-high) ~ 640 dpi

Pris d' ici .

Cela vous évitera beaucoup de confusion lors de la traduction entre px et dp, si vous connaissez votre résolution d'écran.

Donc, supposons que vous vouliez une image de 60 dp pour un écran hdpi, alors la taille de pixel physique de 60 dp est:

px = 60 * (240 / 160)



Veuillez lire la réponse du wiki de la communauté. Ci-dessous sont mentionnées quelques informations à prendre en compte en plus des réponses ci-dessus.

sp = pixel indépendant de l'échelle

dp = pixels indépendants de la densité

dpi = pixels de densité

J'ai parcouru les réponses ci-dessus ... ne les trouvant pas tout à fait correctes. sp pour la taille du texte, dp pour les limites de la mise en page - standard. Mais sp pour la taille du texte brisera la présentation si elle est utilisée sans précaution dans la plupart des périphériques.

sp prend la taille du texte de l’appareil, alors que dp utilise celle du standard de densité de l’appareil (ne changez jamais l’appareil) Disons que le texte de 100sp peut occuper 80% de l’écran ou 100% de l’écran en fonction de la taille de la police définie dans l’appareil

Vous pouvez aussi utiliser sp pour les limites de la mise en page, cela fonctionnera :) Aucune application standard n'utilise sp pour le texte entier

Utilisez sp et dp pour la taille du texte en considérant UX.

  • Ne pas utiliser sp pour le texte dans la barre d'outils (peut utiliser Android dimens disponible ou dp)
  • Ne pas utiliser sp pour le texte dans les petits boutons, le texte très petit, etc.

Certaines personnes utilisent d'énormes FONT dans leur téléphone pour plus de lisibilité, leur donnant un petit texte de taille codée en dur sera un problème UX. Mettez sp pour le texte si nécessaire, mais assurez-vous qu'il ne casse pas la mise en page.

De même, si vous avez une seule application prenant en charge toutes les dimensions, l'ajout d'éléments xxxhdpi augmente considérablement la taille de l'application. Mais maintenant, les téléphones xxxhdpi sont courants et nous devons donc inclure au moins les ressources xxxhdpi pour les icônes dans la barre latérale, la barre d’outils et la barre inférieure. Il est préférable de passer aux images vectorielles pour obtenir des images uniformes et de meilleure qualité pour toutes les tailles d'écran.




Taille de l' écran dans Android sont regroupées en catégories ldpi, mdpi, hdpi, xhdpi, xxhdpiet xxxhdpi. La densité de l'écran est la quantité de pixels dans une zone (telle que pouces) de l'écran. Généralement, il est mesuré en points par pouce ( dpi).

PX(Pixels):

  • notre pixel standard habituel qui correspond au pixel de l'écran. pxest destiné aux pixels absolus. Ceci est utilisé si vous voulez donner des pixels absolus en largeur ou en hauteur. Non recommandé.

DP/DIP(Density pixels / Density independent pixels):

  • dip == dp. Dans les versions Android plus tôt dip a été utilisé et plus tard changé dp. C'est une alternative de px.

  • Généralement nous n'utilisons jamais pxcar c'est une valeur absolue. Si vous pxdéfinissez la largeur ou la hauteur et que cette application est téléchargée sur des périphériques de tailles d'écran différentes, la vue ne s'étire pas à la taille d'origine de l'écran.

  • dpest fortement recommandé d'utiliser à la place de px. Utilisez cette option dpsi vous souhaitez mentionner largeur et hauteur pour agrandir et réduire de manière dynamique en fonction de la taille de l'écran.

  • si nous donnons dp/dip, Android calculera automatiquement la taille en pixels sur la base d'un écran de 160 pixels.

SP(Scale independent pixels):

  • mise à l'échelle en fonction de la préférence de taille de police de l'utilisateur. Les polices doivent utiliser sp.

  • lorsque vous indiquez les tailles de police adaptées à différentes tailles d'écran, utilisez sp. Ceci est similaire à dp.Utiliser spspécialement pour les tailles de police pour augmenter et réduire de façon dynamique en fonction de la taille de l'écran

La documentation Android dit:

lorsque vous spécifiez des dimensions, utilisez toujours une dpou plusieurs spunités. A dpest un pixel indépendant de la densité qui correspond à la taille physique d'un pixel à 160 dpi. An spcorrespond à la même unité de base, mais est dimensionné en fonction de la taille de texte préférée de l'utilisateur (pixel indépendant de l'échelle). Vous devez donc utiliser cette unité de mesure pour définir la taille du texte.




L'écran d'un téléphone mobile est composé de milliers de points minuscules appelés pixels (px) . Un pixel est le plus petit élément qui va faire l’image. Plus le nombre de pixels nécessaires à la création d’une image ou d’un libellé est élevé, plus elle est nette et plus lisible pour l’écran du smartphone.

La résolution de l'écran est mesurée en termes de nombre de pixels à l'écran. La résolution d'écran est une spécification couramment utilisée lors de l'achat d'un appareil, mais elle n'est en fait pas très utile lors de la conception pour Android, car penser les écrans en termes de pixels ignore la notion de taille physique, ce qui est vraiment important pour un appareil tactile.

Les pixels indépendants de la densité (dp ou dip) permettent au concepteur de créer des actifs qui apparaissent de la manière attendue, quelles que soient la résolution ou la densité du périphérique cible.

Un pixel indépendant de la densité (dp ou dip) est égal à un pixel à la densité de base ou à 160 dpi (points par pouce).

1 px / 1dp = 160 dpi / 160 dpi

2 px / 1dp = 320 dpi (2x) / 160 dpi

où,

dpi est en points par pouce

Ainsi, à 320 dpi, 1 dp est égal à 2 px.

Formule

px / dp = dpi / 160dpi

Le nombre de points par pouce (dpi) est une mesure de la netteté (c'est-à-dire de la densité des points illuminés) sur un écran d'affichage. Les points par pouce pour une résolution d'image donnée varieront en fonction de la taille globale de l'écran car le même nombre de pixels est réparti sur un espace différent.

Travailler avec des pixels indépendants de la densité nous aide à gérer une situation semblable à celle où vous avez deux périphériques avec la même résolution en pixels, mais avec une quantité d'espace différente. Supposons que dans un cas, une tablette et un téléphone ont respectivement la même résolution en pixels de 1280 x 800 pixels (160 dpi) et de 800 x 1280 pixels (320 dpi).

Maintenant, parce qu’une tablette est à la densité de base (160 dpi), sa taille en pixels physique et indépendante de la densité est identique, 1280 x 800 pixels. pixels. Ainsi, un téléphone a 400 pixels sur 640 pixels indépendants de la densité. En utilisant un pixel indépendant de la densité, il est donc plus facile d’imaginer mentalement que la tablette a beaucoup plus d’espace que le téléphone.

De même, si vous avez deux appareils avec une taille d'écran similaire, mais une densité de pixels différente, disons que l'un mesure 800 x 1280 pixels (320 dpi) et l'autre 400 x 640 pixels (160 dpi), il n'est pas nécessaire de définir totalement différentes dispositions pour ces deux appareils, car nous pouvons mesurer les actifs en termes de pixel indépendant de la densité, identique pour les deux appareils.

800 par 1280 pixels (320 dpi) = 400 par 640 pixels indépendants de la densité (dp)

400 x 640 pixels (160 dpi) = 400 x 640 pixels indépendants de la densité (dp)

Les pixels indépendants de l'échelle (sp) constituent l'unité préférée pour la taille de la police. Pour des raisons d'accessibilité, Android permet aux utilisateurs de personnaliser la taille de la police de leur appareil. Les utilisateurs qui ont des difficultés à lire du texte peuvent augmenter la taille de la police de leur appareil. Vous pouvez normalement trouver cette option dans les paramètres d'affichage de votre téléphone ou de votre tablette sous la taille de la police. Il est souvent également disponible via les paramètres d'accessibilité.

Avec des pixels indépendants de l'échelle, 16 pixels est exactement le même que 16 pixels lorsque la taille de police du périphérique est normale ou égale à 100%. Mais lorsque la taille de la police du périphérique est importante, par exemple 125%, 16 ps signifie 20 dp ou 1,25 fois 16.

Si vous utilisez dp comme unité pour la taille de la police, ce morceau de texte a une taille physique spécifique, que l'utilisateur ait ou non personnalisé la taille de la police. L'utilisation d'unités sp sera une meilleure expérience pour les personnes malvoyantes.

Référence : Udacity , Google




SDP - une unité de taille évolutive - il ne s'agit pas fondamentalement d'une unité, mais de ressources de dimension pour différentes tailles d'écran.

Essayez la bibliothèque sdp de Intuit. C'est très pratique pour résoudre les problèmes d'unité et vous pouvez rapidement supporter plusieurs écrans .

Usage

android:paddingBottom="@dimen/_15sdp"pour positif et android:layout_marginTop="@dimen/_minus10sdp"pour négatif sdp sdp

Il a une valeur équivalente en dp pour chaque taille de values-sw<N>dpdossier (sw = smallestWidth).

Attention

Utilisez-le avec précaution! Dans la plupart des cas, vous devez encore concevoir une mise en page différente pour les tablettes.

Exemple

<LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginTop="@dimen/_minus10sdp"
          android:paddingBottom="@dimen/_15sdp"
          android:orientation="horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="♡"
                    android:textColor="#ED6C27"
                    android:textSize="@dimen/_70sdp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="U"
                    android:textColor="@android:color/black"
                    android:textSize="@dimen/_70sdp" />
            </LinearLayout>

Vous pouvez utiliser db pour la taille du texte, mais je préfère ssp pour la taille du texte.

Pour plus de détails, consultez la page GitHub de la bibliothèque .




Je veux fournir un moyen facile de comprendre dp. En fait, je pense que dpc'est le plus facile à comprendre. dpest juste une unité de longueur physique. C'est de la même dimension que mmou inch. Il est tout simplement pratique pour nous d’écrire 50dp, 60dpplutôt que de 50/160 inchou 60/160 inch, parce qu’il dps’agit de 1/160 inchla taille ou de la résolution de l’écran.

Le seul problème est que, les dpi Android de certains écrans ne sont pas précis. Par exemple, un écran classé à 160 dpi peut avoir une résolution de 170 dpi. Donc, le résultat de calcul dpest flou. Ce devrait être approximativement le même que 1/160 inch.




Related