Question

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

  • px
  • dip
  • dp
  • sp
Était-ce utile?

La solution

De Developer Documentation Android :

  1.   

    px    Pixels -. Correspond à des pixels réels sur l'écran

  2.   

       pouces -. en fonction de la taille physique de l'écran
      1 pouce = 2,54 cm

  3.   

    mm    Millimètres -. En fonction de 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    Densité -indépendante Pixels - une unité abstraite qui est basée sur la densité physique de l'écran. Ces unités sont par rapport à un 160       dpi écran, donc une dp est un pixel sur un écran de 160 dpi. Le rapport de       dp-à-pixel va changer avec la densité de l'écran, mais pas nécessairement       en proportion directe. Remarque: Le compilateur accepte à la fois « dip » et       "Dp", bien que "dp" est plus compatible avec "sp".

  6.   

    sp    échelle -indépendante Pixels - c'est comme l'unité dp, mais il est également mis à l'échelle par la préférence de taille de la police de l'utilisateur. Il vous est recommandé       utiliser cet appareil lors de la spécification des tailles de police, ils seront ajustés       à la fois la densité de l'écran et les préférences de l'utilisateur.

De Indépendance Comprendre densité Dans 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      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Plus d'informations peuvent être trouve aussi dans le Google Conception Documentation .

Autres conseils

Un peu de tout cela et comment obtenir le meilleur support pour de multiples écrans de différentes tailles et densités est très bien documenté ici:

  • Compatibilité avec plusieurs écrans
  

Taille de l'écran   taille réelle, mesurée en diagonale de l'écran.   Pour simplifier, les groupes Android tout l'écran en quatre tailles réelles   tailles généralisées:. petites, normales, grandes et extra-large

     

Trames   Le nombre de pixels dans une zone physique du   écran; habituellement dénommée dpi (points par pouce). Par exemple, un   écran de densité « faible » a moins de pixels dans une zone physique donnée,   par rapport à un écran de masse volumique « normale » ou « élevé ». Pour la simplicité,   groupes Android toutes les densités d'écran réelles en six généralisés   densités: faible, moyenne, haute, très haute, extra-extra-haute, et   extra-extra-extra-haute.

     

Orientation L'orientation de l'écran du point de l'utilisateur   vue. C'est portrait ou paysage, ce qui signifie que de l'écran   rapport d'aspect est soit large ou haut, respectivement. Soyez conscient que   seulement différents dispositifs fonctionnent dans des orientations différentes par   par défaut, mais l'orientation peut changer lors de l'exécution lorsque l'utilisateur   fait tourner le dispositif.

     

Résolution Le nombre total de pixels physiques sur   un écran. Lors de l'ajout du support pour de multiples écrans, les applications ne   travaille pas directement avec la résolution; les applications devraient être concernés   uniquement avec la taille de l'écran et de la densité, comme indiqué par la généralisation   groupes de taille et de densité.

     

pixel de densité indépendant (dp) A virtuelle   unité de pixel que vous devez utiliser lors de la définition mise en page l'interface utilisateur, d'exprimer   dimensions mise en page ou la position d'une manière indépendante de la densité.   Le pixel de densité indépendant est équivalent à un pixel physique sur un 160   dpi écran, qui est la densité de référence pris en charge par le système pour une   écran de densité « moyenne ». Lors de l'exécution, le système traite de manière transparente   mise à l'échelle des unités dp, au besoin, en fonction de la densité réelle   de l'écran en cours d'utilisation. La conversion des unités de dp de pixels de l'écran est   Facile:   px = dp * (dpi / 160).   Par exemple, sur un écran 240 dpi, 1 dp   est égal à 1,5 pixels physiques. Vous devriez toujours utiliser des unités lorsque dp   la définition de l'interface utilisateur de votre application, afin de garantir un affichage correct de l'interface utilisateur sur   écrans avec des densités différentes.

Si vous êtes sérieux au sujet de tout le développement d'une application Android pour plus d'un type d'appareil, vous devez avoir lu les écrans document de développement de support au moins une fois. En plus de cela, il est toujours une bonne chose de connaître le nombre réel de dispositifs actifs qui ont une configuration d'écran particulier.

Je vais parler plus en détail comment exactement dp convertir px:

  • Si en cours d'exécution sur un dispositif de mdpi, une image 150 x 150 px prendra 150 * 150 dp de l'espace de l'écran.
  • Si en cours d'exécution sur un dispositif de hdpi, une image 150 x 150 px prendra 100 * 100 dp de l'espace de l'écran.
  • Si en cours d'exécution sur un dispositif de xhdpi, une image 150x150 px prendra 75 * 75 dp de l'espace de l'écran.

L'inverse: dire, vous voulez ajouter une image à votre application et vous en avez besoin pour remplir un contrôle 100 * 100 dp. Vous aurez besoin de créer des images de tailles différentes pour les tailles d'écran prises en charge:

  • image 100 * 100 px pour mdpi
  • image 150 * 150 px pour hdpi
  • image 200 * 200 px pour xhdpi

px Pixels -. Point par échelle correspond à des pixels réels sur l'écran

Pouces -. En fonction de la taille physique de l'écran

mm Millimètres -. En fonction de la taille physique de l'écran

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

dp Densité - pixels indépendants - une unité abstraite qui est basée sur la densité physique de l'écran. Ces unités sont par rapport à un écran 160 dpi, donc une dp est un pixel sur un écran de 160 dpi. Le rapport du DP-à-pixel change avec la densité de l'écran,  mais pas nécessairement en proportion directe.  Remarque:. Le compilateur accepte les dip et dp, bien que dp est plus compatible avec sp

sp Pixels -Scale indépendant - c'est comme l'unité de dp,  mais il est également mis à l'échelle par la préférence de taille de la police de l'utilisateur. Il est recommandé d'utiliser cet appareil lors de la spécification des tailles de police,  ils seront ajustés à la fois la densité de l'écran et les préférences de l'utilisateur.

Prenons l'exemple de deux écrans qui sont de la même taille, mais on a une densité de l'écran de 160 dpi (points par pouce, à savoir les pixels par pouce), et l'autre est 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

En outre, vous devriez avoir une compréhension claire sur les concepts suivants:

Taille de l'écran:

  

taille réelle, mesurée en diagonale de l'écran. Pour simplifier, les groupes Android tout écran réelle tailles en   quatre tailles: généralisées. petites, normales, grandes et très grandes

Densité de l'écran:

  

La quantité de pixels à l'intérieur d'une zone physique de l'écran; habituellement dénommée dpi (points par pouce). Par exemple, un   écran de densité « faible » a moins de pixels dans une zone physique donnée,   par rapport à un écran de masse volumique « normale » ou « élevé ». Pour la simplicité,   groupes Android toutes les densités d'écran réelles en quatre généralisés   densités:. faible, moyenne, haute et extra haute

Orientation:

  

L'orientation de l'écran du point de vue de l'utilisateur. C'est portrait ou paysage, ce qui signifie que le   le ratio d'aspect de l'écran est large ou haut, respectivement. Savoir   que non seulement les différents appareils fonctionnent dans des orientations différentes   par défaut, mais l'orientation peut changer lors de l'exécution lorsque l'utilisateur   fait tourner l'appareil.

Résolution:

  

Le nombre total de pixels physiques sur un écran. Lors de l'ajout du support pour de multiples écrans, les applications ne fonctionnent pas directement   à la résolution; les demandes doivent être concernées uniquement avec l'écran   taille et densité, comme indiqué par la taille et la densité généralisée   groupes.

pixel Densité indépendante (dp):

  

Une unité de pixel virtuel que vous devez utiliser lors de la définition de l'interface utilisateur mise en page, d'exprimer les dimensions de mise en page ou   la position d'une manière indépendante de la densité. Le pixel de densité indépendant   est équivalent à un pixel physique sur un écran 160 dpi, qui est le   la densité de base pris en charge par le système pour un écran de densité « moyenne ».   Lors de l'exécution, le système traite de manière transparente toute mise à l'échelle de la dp   unités, selon les besoins, en fonction de la densité réelle de l'écran en cours d'utilisation.   La conversion des unités de dp de pixels de l'écran est simple: px = dp * (dpi   / 160). Par exemple, sur un écran 240 dpi, 1 dp est égal à 1,5 physique   pixels. Vous devriez toujours utiliser des unités dp lors de la définition de votre   l'interface utilisateur de l'application, afin de garantir un affichage correct de l'interface utilisateur sur les écrans avec   densités différentes.

Référence: site développeurs Android

dp est dip. Utilisez-le pour tout (margin, padding, etc.).

Utilisez sp pour {text-size} seulement.


Pour obtenir la même taille sur différentes densités d'écran, Android traduit ces unités en pixels lors de l'exécution, donc il n'y a pas de mathématiques difficile pour vous de le faire.


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

Entrer image description ici

Source: Android Programmation: Le Big Nerd Ranch Guide

Je l'ai calculé la formule ci-dessous pour effectuer les conversions de dpi à dp et sp entrer la description d'image ici

Définitions

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

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

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

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

dip ou dp sont pixels de densité-indenpendant , soit ils correspondent à plus ou moins de pixels en fonction de la densité physique.

  • 1DP = 1px sur mdpi

 ici

sp ou sip est un pixel échelle indépendante . Ils sont mis à l'échelle lorsque le Grand texte est activée dans Paramètres > Accessibilité

  • 1sp = 1DP
  • 1sp = 1.2dp Accessibilité Grand texte

Qu'est-ce à utiliser?

  

Utilisez sp Taille du texte.

     

Utilisez dp pour tout le reste.

Source 1

Source 2

Source 3 : (données de la source 3 est donnée ci-dessous)

  

Ce sont des valeurs de dimension définies dans XML. Une dimension est spécifiée   avec un nombre suivi d'une unité de mesure. Par exemple: 10px, 2po,   5sp. Les unités de mesure suivantes sont prises en charge par Android:

     

dp

     

Pixels indépendants de la densité - Une unité abstraite qui est basée sur la   la densité physique de l'écran. Ces unités sont par rapport à un 160 dpi   (points par pouce), sur lequel l'écran 1DP est à peu près égal à 1 pixel. Quand   en cours d'exécution sur un écran de densité plus élevée, le nombre de pixels utilisé pour dessiner   1DP est mis à l'échelle par un facteur approprié pour le dpi de l'écran.   De même, lorsque sur un écran de faible densité, le nombre de pixels utilisés   pour 1DP est réduite. Le rapport du DP-à-pixel va changer avec le   la densité de l'écran, mais pas nécessairement en proportion directe. L'utilisation dp   unités (au lieu d'unités Px) est une solution simple à faire le point de vue   dimensions dans votre mise en page redimensionnent correctement pour écran différent   densités. En d'autres termes, il assure la cohérence pour le monde réel   tailles de vos éléments d'interface utilisateur à travers différents dispositifs.

     

sp

     

Pixels indépendantes de l'échelle - C'est comme l'unité dp, mais il est aussi   mis à l'échelle par la préférence de taille de la police de l'utilisateur. Il est recommandé d'utiliser   cette unité lors de la spécification des tailles de police, donc ils seront ajustés pour   à la fois la densité de l'écran et la préférence de l'utilisateur.

     

pt

     

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

     

px

     

Pixels - correspond à des pixels réels sur l'écran. Cette unité de   mesure n'est pas recommandée, car la représentation réelle peut varier   dispositifs à travers; chaque dispositif peut comporter un nombre différent de pixels par   pouces et peut avoir plus ou moins de pixels au total disponibles à l'écran.

     

mm

     

Millimètres - Sur la base de la taille physique de l'écran

.      

     

pouces -. Sur la base de la taille physique de l'écran

Remarque: Une dimension est simple ressource qui est référencé en utilisant la valeur fournie dans l'attribut name (pas le nom du fichier XML). En tant que tel, vous pouvez combiner les ressources de dimension avec d'autres ressources simples dans un seul fichier XML, sous un même élément.

En fait la seule fois où px applique est un px, et qui est si vous voulez exactement un pixel à l'écran comme dans le cas d'un diviseur:

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

> 120 dpi, arrondit à 0.

px

Pixels - correspond à des pixels réels sur l'écran

.

dp ou dip

pixels de densité indépendante - une unité abstraite qui est basée sur la densité physique de l'écran. Ces unités sont par rapport à un écran 160 dpi, donc une dp est un pixel sur un écran de 160 dpi.

Utilisation de dp:

l'indépendance de la densité - Votre application permet d'obtenir « l'indépendance de densité » lorsqu'elle préserve la taille physique (du point de vue de l'utilisateur) des éléments d'interface utilisateur lors de l'affichage sur les écrans avec des densités différentes. (Ie) L'image devrait ressembler à la même taille (pas agrandie ou rétreint) dans différents types d'écrans.

sp

Pixels indépendantes de l'échelle - c'est comme l'unité dp, mais il est également mis à l'échelle par la préférence de taille de la police de l'utilisateur

.

http://developer.android.com/guide/topics/resources/more -resources.html # Dimension

Où utiliser ce et relation entre px et dp?

pixel de densité indépendant (dp)

Une unité de pixel virtuel que vous devez utiliser lors de la définition de l'interface utilisateur mise en page, pour exprimer les dimensions ou la position de mise en page d'une manière indépendante de la densité. Comme décrit ci-dessus, le pixel de densité indépendant est équivalent à un pixel physique sur un écran 160 dpi, qui est la densité de référence pris en charge par le système pour un écran de densité « moyen ». Lors de l'exécution, le système traite de manière transparente toute mise à l'échelle des unités dp, au besoin, en fonction de la densité réelle de l'écran en cours d'utilisation. La conversion des unités de dp de pixels de l'écran est simple:

px = dp * (dpi / 160).

Par exemple, sur un écran de 240 dpi, une dp est égale à 1,5 pixels physiques. Vous devriez toujours utiliser des unités dp lors de la définition de l'interface utilisateur de votre application, afin d'assurer affichage correct de l'interface utilisateur sur les écrans avec des densités différentes.

pixel Comprendre Dp et vice versa est essentiel (en particulier pour donner des valeurs exactes dp à l'équipe créative)

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 pixel en nombre pair de l'équipe créative. Sinon, la précision se passera perdre tout en multipliant par 0,5.

px

Il est expliqué ci-dessus. Essayez d'éviter dans les fichiers de mise en page. Mais il y a des cas où px est nécessaire. par exemple, la ligne de séparation de liste. px est mieux ici pour donner une ligne d'un pixel comme un diviseur pour tous dans les résolutions d'écran.

sp

Utilisez sp pour les tailles de police. Alors que la police dans l'application changera alors que les changements de taille des polices de périphérique (qui est, affichage -> Polices sur l'appareil). Si vous voulez conserver une police de taille statique à l'intérieur de l'application, vous pouvez donner la dimension de la police dans dp. Dans ce cas, il ne changera jamais. Les développeurs peuvent obtenir une telle exigence pour certains écrans spécifiques, pour cela, les développeurs peuvent utiliser dp au lieu de sp. Dans tous les autres cas, il est recommandé sp.

Vous pouvez voir la différence entre px et dp de l'image ci-dessous, et vous pouvez également constater que la px et dp ne pouvaient pas garantir les mêmes dimensions physiques sur les différents écrans.

entrer image description ici

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

Vous pouvez utiliser les deux dp et dip à ses lieux.

Je n'utiliser que dp.

Il y a beaucoup de discussions sur l'utilisation de « sp » pour la taille des polices, et si je comprends le point, je ne pense pas que ce soit la bonne chose à faire d'un point de vue de la conception. Vous pouvez finir par casser votre conception si l'utilisateur a une sélection de taille de la police bancale, et l'utilisateur finissent par blâmer l'application , et non leurs propres choix de vie.

En outre, si vous prenez une application-police sp sur une tablette de 160 dpi, vous constaterez que tout échelles ... mais votre police, qui va chercher minuscule en comparaison. Il est pas un bon regard.

Bien que l'idée des polices « sp » a un bon cœur, il est une mauvaise idée. Stick avec dp pour tout.

sp = échelle pixel indépendant

dp = dip = densité de pixels indépendants

dpi = points par pouce

  

Nous devons éviter d'utiliser sp .

     

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

Android supporte différentes résolutions d'écran

  • LDPI (bas) ~ 120 dpi
  • mdpi (moyen) ~ 160 dpi
  • hdpi (haut) ~ 240 dpi
  • xhdpi (extra-haute) ~ 320 dpi
  • xxhdpi (extra-extra-haute) ~ 480 dpi
  • xxxhdpi (extra-extra-extra-haute) ~ 640 dpi

Dispositif de LDPI 120 dp possède 120 pixels dans la taille de 1 pouce.

La même chose pour d'autres densités ...

Nous, les ingénieurs logiciels doivent utiliser cette formule de conversion:

  

pixel = dp * (densité / 160)

1 dp du dispositif 240 dpi aura = 1 * (240/160) = 3/2 = 1,5 pixels.

480 1 dp du dispositif dpi aura = 1 * (480/160) = 3 pixels.

En utilisant cette connaissance 1,5 et 3 pixels, un ingénieur logiciel peut concevoir des mises en page différentes densités.

Pour vérifier les paramètres de l'écran de tout appareil:

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

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

La différence entre les unités de dp et sp mentionnées comme « préférence de taille de la police de l'utilisateur » par les réponses copiées à partir des documents officiels peut être vu au moment de l'exécution en changeant l'option Settings->Accessibility->Large Text.

option Large Text texte des forces pour devenir des temps de 1.3 plus.

private static final float LARGE_FONT_SCALE = 1.3f;

Cela pourrait être bien du fournisseur de cours dépend car il se trouve dans packages / apps / paramètres .

dpi -

  • points par pouce
  • Mesure de la densité de pixels de l'écran.

px - pixel

  • Pour les pixels de l'écran de cartographie

pt - points

  • A propos de 1/72 de pouce, par rapport à la taille de l'écran physique.

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

mm- milimeter  -. Par rapport à la taille de l'écran physique

sp -. Pixel échelle indépendante

  • Sur la base de User`s taille de la police préférence.
  • police doit être «sp.

dip -

  • dip == dp
  • Densité pixel indépendant.
  • Il varie en fonction de la densité de l'écran.
  • Dans l'écran 160 dpi, 1 dp = 1 pixel.
  • Utilisez dp sauf la taille de la police du texte.

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 aller

Il définit le "DENSITY_ *" constantes.

  • LDPI (faible) ~ 120dpi
  • mdpi (moyen) ~ 160dpi
  • hdpi (haute) ~ 240dpi
  • xhdpi (extra-haute) ~ 320dpi
  • xxhdpi (extra-extra-haute) ~ 480dpi
  • xxxhdpi (extra-extra-extra-haute) ~ 640dpi

.

triera beaucoup de confusion lors de la traduction entre px et dp, si vous connaissez votre écran dpi.

Alors, disons que vous voulez une image de 60 dp pour un écran hdpi alors la taille de pixel physique de 60 dp est:

px = 60 * (240 / 160)

Taille de l'écran dans Android sont regroupées en catégories small, medium, large, extra large, double-extra et triple-extra. la densité de l'écran est le nombre de pixels dans une zone (comme pouces) de l'écran. En général, elle est mesurée en points par pouce (dpi). la densité de l'écran est groupée basse, moyenne, haute et très haute. La résolution est le nombre total de pixels dans l'écran.

  • dp: densité de pixel indépendant, il varie en fonction de la densité de l'écran. Dans l'écran 160 dpi, 1 dp = 1 pixel. À l'exception de la taille de la police, utilisez toujours dp.
  • dip: dip == dp. Dans les versions antérieures Android dip a été utilisé et plus tard changé pour dp.
  • sp: échelle de pixel indépendant, mis à l'échelle en fonction de la taille de la police de l'utilisateur préférence. Les polices doivent utiliser sp.
  • px:. notre pixel standard habituelle qui associe au pixel de l'écran
  • . pouces, par rapport à la taille de l'écran physique
  • mm. Mm , par rapport à la taille de l'écran physique
  • pt:. 1/72 de pouce, par rapport à la taille de l'écran physique

Formule pour la conversion entre les unités

 px = dp * (dpi / 160)

dp à px dans l'appareil

L'exemple suivant peut aider à mieux comprendre. La mise à l'échelle se produit basé sur la taille du seau de 120 (LDPI), 160 (MDPI), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) et 640 (xxxhdpi). Le rapport Google suggéré pour la conception est de 3: 4: 6: 8: 12 pour LDPI: mdpi: hdpi: xhdpi: xxhdpi

Une image 150px X 150px occupera,

  
      
  • 150 X 150 dp dp espace écran en mdpi
  •   
  • 100 x 100 dp dp espace écran dans hdpi
  •   
  • 75 dp X 75 dp espace écran dans xhdpi
  •   

Vous pouvez utiliser la calculatrice DPI suivant pour corriger vos tailles d'image et d'autres dimensions lorsque vous souhaitez avoir une conception de l'interface utilisateur uniforme dans tous les appareils Android.

Calculatrice DPI en Java

/*
Program output
LDPI: 165.0 X 60.0
MDPI: 220.0 X 80.0
HDPI: 330.0 X 120.0
XHDPI: 440.0 X 160.0
XXHDPI: 660.0 X 240.0
XXXHDPI: 880.0 X 320.0
*/


public class DPICalculator {

private final float LDPI = 120;
private final float MDPI = 160;
private final float HDPI = 240;
private final float XHDPI = 320;
private final float XXHDPI = 480;
private final float XXXHDPI = 640;    

private float forDeviceDensity;
private float width;
private float height;

public DPICalculator(float forDeviceDensity, float width, float height){
    this.forDeviceDensity = forDeviceDensity;
    this.width = width;
    this.height = height;
}

public static void main(String... args) {
    DPICalculator dpiCalculator = new DPICalculator(240,330,120);
    dpiCalculator.calculateDPI();
}


private float getPx(float dp, float value) {
    float px = dp * (value / forDeviceDensity );        
    return px;
}

private void calculateDPI() {

    float ldpiW = getPx(LDPI,width);        
    float ldpiH =  getPx(LDPI,height);
    float mdpiW = getPx(MDPI,width);        
    float mdpiH =  getPx(MDPI,height);        
    float hdpiW = getPx(HDPI,width);        
    float hdpiH =  getPx(HDPI,height);       
    float xdpiW = getPx(XHDPI,width);        
    float xdpiH =  getPx(XHDPI,height);
    float xxdpiW = getPx(XXHDPI,width);        
    float xxdpiH =  getPx(XXHDPI,height);
    float xxxdpiW = getPx(XXXHDPI,width);        
    float xxxdpiH =  getPx(XXXHDPI,height);

    System.out.println("LDPI: " + ldpiW + " X " + ldpiH);
    System.out.println("MDPI: " + mdpiW + " X " + mdpiH);
    System.out.println("HDPI: " + hdpiW + " X " + hdpiH);
    System.out.println("XHDPI: " + xdpiW + " X " + xdpiH);
    System.out.println("XXHDPI: " + xxdpiW + " X " + xxdpiH);
    System.out.println("XXXHDPI: " + xxxdpiW + " X " + xxxdpiH);        
   }
}

Plus d'informations reportez-vous le lien suivant.

http: / /javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/

  • px -. Un pixel, identique à celui utilisé en CSS, JavaScript, etc
  • sp - pixels à grande échelle indépendante
  • dip - densité de pixels indépendant

Normalement sp est utilisé pour les tailles de police, alors que dip est utilisé (également appelé dp) pour les autres.

S'il vous plaît lire la réponse de la communauté wiki. Mentionnés ci-dessous quelques informations à considérer en plus des réponses ci-dessus.

sp = échelle pixel indépendant

dp = densité de pixels indépendants

= ppp pixels de densité

Je suis passé par les réponses ci-dessus ... ne pas les trouver tout à fait correct. sp pour la taille du texte, dp pour limites de présentation - standard. Mais sp pour la taille du texte brisera la mise en page si elle est utilisée négligemment dans la plupart des appareils.

sp prendre la textsize du dispositif, tandis que dp prendre que la norme de densité de dispositif (jamais modifier dans un dispositif) Dites texte peut 100sp occupe 80% de l'écran ou 100% de l'écran en fonction de la taille de la police définie dans l'appareil

Vous pouvez utiliser sp pour les limites de mise en page aussi, il fonctionnera :) Aucune utilisation de standard de l'application sp pour tout le texte

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

  • Ne pas utiliser sp texte dans la barre d'outils (peut utiliser Android dimens disponible pour différentes tailles d'écran avec dp)
  • Ne pas utiliser sp pour le texte en petits boutons bornés, très petit texte, etc

Certaines personnes utilisent énorme taille de police dans leur téléphone pour plus de lisibilité, en leur donnant un petit texte de taille dans le programme seront un problème UX. Mettez sp pour le texte si nécessaire, mais assurez-vous qu'il ne cassera pas la mise en page.

De même, si vous avez une application unique supportant toutes les dimensions, l'ajout d'actifs xxxhdpi augmente la taille de l'application beaucoup. Mais maintenant, les téléphones xxxhdpi sont communs donc nous devons inclure les actifs de xxxhdpi atleast pour les icônes dans la barre latérale, barre d'outils et barre inférieure. Il est préférable de passer à des images vectorielles avoir un uniforme et des images de meilleure qualité pour toutes les tailles d'écran.

Notez également que les gens utilisent la police personnalisée dans leur téléphone. Ainsi, l'absence d'une police peut poser des problèmes en ce qui concerne l'espacement et tous. Dites la taille du texte 12sp pour une police personnalisée peut prendre quelques pixels supplémentaires que la police par défaut.

Reportez-vous site développeur google pour screendensities et les détails de basedensity pour Android. https://developer.android.com/training/multiscreen/screendensities

Je suis tombé sur un bon article sur la conception des applications Android interface utilisateur pour différentes résolutions d'écran, et je voudrais laisser ici juste pour quelqu'un de recherche dans ce domaine. Oui, je sais qu'il est en quelque sorte décrite dans Google docs (et mentionné dans les postes ci-dessus), je l'ai lu cela, mais ce ne fut pas bon pour moi (oui, je peux être trop stupide)). Il me restait peu claire sur la façon de concevoir dispositions capables de gérer différentes tailles d'écran. Je déteste concept de DP et ainsi de suite, quand j'ai besoin de mettre en œuvre une mise en page de l'interface utilisateur « flexible » pour les écrans différents. (Hey les développeurs iOS - oui, vous avez raison, il est concept de Storyboard)

.

Android n'a pas mauvaise conception de l'interface utilisateur, mais manque de fonctionnalités iOS Storyboard, malheureusement. La conception flexible dans l'interface utilisateur Android n'est pas chose facile (au mieux).

va ici l'article qui m'a aidé à comprendre ce qu'il faut faire dans Android pour faire des mises en page différentes tailles d'écran:

jmstudio Blog: - Décider Android App Taille de l'écran

  

Comment concevoir l'interface utilisateur pour Android Apps différent Taille de l'écran

     

Pour concevoir une interface utilisateur d'application pour différentes tailles d'écran, notre conception initiale doit   répondre à un minimum d'espace requis pour chaque taille de l'écran. Applications définit un   la taille minimale (en dp) pour chaque type d'écran généralisé. Voici un   guide de taille de l'écran Android.    Taille de l'écran minimum pour Android dans dp   Lorsque nous obtenons la taille de l'écran dans dp, il ne suffit pas pour nous de concevoir   l'interface utilisateur de l'application Android. Pour chaque taille de l'écran, nous avons besoin de préparer graphiques   et les images en mode point pour chaque densité. Voici une densité d'écran Android   ligne directrice.    Lignes directrices de la densité applications (dpi)

     

Pour le calcul facile, nous pouvons suivre les 3: 4: 6: 8 rapport d'échelle entre   les quatre densités généralisées. Si nous créons une image de pixel 36 × 36 pour   dispositif LDPI, le reste des densités de taille de photos sera 48 × 48 pour mdpi,   72 × 72 pour hdpi, et 96 × 96 pour xhdpi.

     

Comment concevoir l'interface utilisateur Android Apps dans Photoshop

     

De nombreux concepteurs ont des problèmes pour la conception de l'interface utilisateur de l'application Android dans Photoshop ou tout autre pixel   outils de conception graphique à base en raison de l'unité de densité indépendante, dp.   Les concepteurs ne savent pas comment la carte dp au pixel. Google ne donne pas non plus   un guide de conception claire interface utilisateur Android pour eux, mais ils donnent une base   formule dp et de la traduction pixel.

     

Comme la définition applications, 1PD égale à 1PX sous dispositif 160 dpi (de mdpi).   Nous voulons donc concevoir une application Android pour xlarge appareil Android avec   densité mdpi, nous pouvons définir la taille de notre interface utilisateur en pixel 960 pixels en largeur   et 720px de hauteur; Suivez la même règle de mappage, nous pouvons obtenir   suivant la taille de l'écran Android App régle de conception de l'interface utilisateur:

     

 Android App Taille de l'écran dans la ligne directrice de Pixel

AJOUTÉE : Si vous intéressé par l'interface utilisateur "flexible" trop, jetez un oeil à cette bibliothèque: Construire une interface utilisateur réactive avec ConstraintLayout

1) dp: (density independent pixels)

Le nombre de pixels représentés dans une unité de dp augmentera à mesure que la résolution augmente de l'écran (quand on a plus de points / pixels par pouce). A l'inverse de dispositifs ayant une résolution plus faible, le nombre de pixels représentés dans le bloc de dp diminue. Comme il est une unité relative, il a besoin d'avoir une base de référence à comparer. Cette ligne de base est un écran de 160 dpi. Ceci est l'équation: px = dp * (dpi / 160).


2) sp: (scale independent pixels)

Cette unité échelles selon la dpi écran (similaire à dp), ainsi que la taille de la police de l'utilisateur préférence.


3) px: (pixels)

pixels réels ou de points sur l'écran.

Pour plus de détails, vous pouvez visiter

  

Android Guide du développeur> Dimension
   Écrans

Taille de l'écran dans Android est regroupés en catégories ldpi, mdpi, hdpi, xhdpi, xxhdpi et xxxhdpi. densité de l'écran est la quantité de pixels dans une zone (comme pouces) de l'écran. En général, elle est mesurée en points par pouce (dpi).

PX(Pixels):

  • notre pixel standard habituelle qui associe au pixel de l'écran. px est destiné aux pixels absolues. Ceci est utilisé si vous voulez donner en termes de pixels absolus pour la largeur ou de la hauteur. Non recommandé.

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

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

  • En général, nous utilisons jamais px parce qu'il est valeur absolue. Si vous utilisez px pour définir la largeur ou de la hauteur, et si cette application est en cours de téléchargement dans les appareils de taille d'écran différent, ce point de vue ne sera pas étirer selon la taille de l'écran d'origine.

  • dp est fortement recommandé d'utiliser à la place de px. Utilisez dp si vous voulez parler de la largeur et la hauteur de croître et réduire dynamiquement en fonction des tailles d'écran.

  • si nous donnons dp/dip, Android calcule automatiquement la taille des pixels sur la base de l'écran de taille 160 pixels.

SP(Scale independent pixels):

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

  • en mentionnant les tailles de police pour s'adapter à différentes tailles d'écran, utilisez sp. Ceci est similaire à dp.Use sp en particulier pour les tailles de police de croître et se rétrécissent de façon dynamique en fonction des tailles d'écran

Android Documentation dit:

  

en spécifiant des dimensions, utilisez toujours soit dp ou unités de sp. Un dp est   un pixel de densité indépendant qui correspond à la taille physique d'un   pixel à 160 dpi. Un sp est la même unité de base, mais est mis à l'échelle par le   la taille du texte préféré de l'utilisateur (c'est un pixel d'échelle indépendant), de sorte que vous   devrait utiliser cette unité de mesure lors de la définition la taille du texte

L'écran d'un téléphone mobile est composé de milliers de petits points appelés pixels (px) . Un pixel est le plus petit élément qui va faire l'image. Plus le nombre de pixels pour faire une image ou un libellé, la plus nette qu'il devient et rend l'écran du smartphone plus facilement lisible.

résolution de l'écran est mesurée en termes de nombre de pixels sur l'écran. Résolution d'écran est une spécification couramment utilisée lors de l'achat d'un appareil, mais il est en fait pas très utile lors de la conception pour Android parce que la pensée des écrans en termes de pixels ne tient pas compte de la notion de taille physique qui, pour un dispositif tactile est vraiment très important.

densité pixel indépendant (dp ou immersion) permettent au concepteur de créer des actifs qui apparaissent de manière attendue, quelle que soit la résolution ou la densité du dispositif cible.

est égale à un pixel à la densité de référence ou 160 dpi (points par pouce) Une densité de pixel indépendant (dp ou dip).

1 px / 1DP = 160 dpi / 160 dpi

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

où,

dpi est points par pouce

Alors, à 320 dpi, 1 dp est égale à 2 px.

Formule

px / dp = ppp / 160dpi

points par pouce (dpi) est une mesure de la netteté (à savoir, la densité des points lumineux) sur un écran d'affichage. Les points par pouce pour une résolution d'image donnée différeront en fonction de la taille de l'écran dans l'ensemble depuis le même nombre de pixels sont en cours répartis sur un espace différent.

Travailler avec la densité des pixels indépendants nous aider à faire face à une situation comme celle où vous avez deux appareils avec la même résolution de pixels, mais différant quantité d'espace. Supposons que dans un cas, d'un comprimé et le téléphone a la même résolution de pixel 1280 par 800 pixels (160 dpi) et 800 par 1280 pixels (320 dpi), respectivement.

Maintenant, parce qu'un comprimé est à la densité de base (160 ppp) ses pixels physiques et densité indépendante tailles sont les mêmes, 1280 par 800. Le téléphone d'autre part a une densité de pixels, il a donc la moitié autant densité indépendante pixels comme des pixels physiques. Ainsi, un téléphone a 400 par 640 pixels indépendants densité. Donc, en utilisant un pixel de densité indépendante facilite l'image mentalement cette tablette a beaucoup plus d'espace que le téléphone.

De même, si vous avez deux appareils dotés d'un écran similaire, mais différente densité de pixels, disons est à 800 par 1280 pixels (320 ppp), et l'autre est de 400 par 640 pixels (160 ppp), on n'a pas besoin pour définir dispositions totalement différentes pour ces deux appareils que nous pouvons mesurer les actifs en termes de densité pixel indépendant qui est identique pour les deux appareils.

800 par 1280 pixels (320dpi) = 400 par 640 pixels densité indépendante (dp)

400 par 640 pixels (160 dpi) = 400 par 640 pixels densité indépendante (dp)

Echelle pixels indépendants (sp) est l'appareil préféré 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 du mal à lire du texte peut augmenter la taille de la police de leur appareil. Vous pouvez normalement trouver cette option dans les paramètres d'affichage sur votre téléphone ou tablette sous la taille de la police. Il est souvent également disponible dans les paramètres d'accessibilité.

Avec échelle pixels indépendants, 16 sp est exactement le même que 16 dp lorsque la taille de la police de l'appareil est normale ou 100%. Mais quand la taille de la police de l'appareil est grand, par exemple 125%, 16 sp se traduira à 20 dp ou 1,25 fois 16.

Si vous utilisez dp comme unité de taille de la police, puis ce morceau de texte a une taille physique spécifique, peu importe si l'utilisateur a personnaliser la taille de la police de l'appareil. L'utilisation d'appareils sp fera une meilleure expérience pour les personnes malvoyantes.

Référence : Udacity , Google

  

sp: échelle pixel indépendant

Vous devriez l'utiliser avec des textes, car il est mis à l'échelle automatiquement en fonction de la taille de la police qui est utilisée par l'utilisateur dans son appareil.

  

px: pixel ou élément d'image est le point unique sur l'écran

Avant de répondre à cette question me laisse diminuer le nombre d'unités en premier. Alors là, vous allez:. dp ou dip sont à la fois identiques et sont connus comme pixels indépendants de la densité

1. px - signifie pixels. Les pixels sont un seul point, le point sur un écran. En général, dans l'industrie du mobile est mesurée en ppi (pixels par pouce). la résolution de l'écran est directement proportionnelle à ppi, plus le nombre de pixels par pouce la résolution la plus élevée de l'écran.

Par exemple, si vous dessinez une image d'une taille 200 px * 200 px , son apparence doit être différent sur un dispositif à haute résolution par rapport à une faible dispositif de résolution. La raison en est 200 px image sur un téléphone à faible résolution sera plus grande que sur regarder un appareil à haute résolution.

Ci-dessous les images montrent une résolution de la même image sur différents téléphones -

  • Téléphone à haute résolution d'écran

     Entrer image description ici

  • Téléphone avec une résolution d'écran faible

     Entrer image description ici

2. immersion ou dp - une unité abstraite qui est basée sur la densité physique de l'écran. Ces unités sont par rapport à un écran 160 dpi, donc une dp est un pixel sur une 160 écran dpi. Le rapport de dp à pixel va changer avec la densité de l'écran, mais pas nécessairement en proportion directe. « L'indépendance de la densité » fait référence à l'affichage uniforme des éléments d'interface utilisateur sur les écrans avec des densités différentes.

  • l'image qui montre 80px (image côté gauche) et 80 dp (image à droite) . différence de Google Checkout.

 Entrer image description ici

A dp est égale à un pixel physique sur un écran avec une densité de 160 . Pour calculer dp:

dp = (largeur en pixels * 160) / la densité de l'écran

3. sp - signifie pixels évolutifs. En général, sp est utilisé pour les textes sur l'interface utilisateur, et sp conserve les paramètres de police. Par exemple, si un utilisateur sélectionné une police plus grande que 30 sp il à l'échelle automatique apparaisse grande selon une préférence de l'utilisateur.

Je veux fournir un moyen facile de comprendre dp. En fait, je pense que dp est le plus facile à comprendre. dp est juste une unité de longueur physique. Il est de la même dimension que mm ou inch. Il est juste pratique pour nous d'écrire 50dp, 60dp plutôt que 50/160 inch ou 60/160 inch, parce que l'on est juste dp 1/160 inch quelle que soit la taille de l'écran ou la résolution est.

Le seul problème est que, le dpi androïde de certains écrans ne sont pas précis. Par exemple, un écran classé à 160dpi peut avoir en effet 170dpi. Ainsi, le résultat du calcul de dp est floue. Il devrait être à peu près la même que 1/160 inch.

SDP - une unité de taille évolutive -. Fondamentalement, il est pas une unité, mais les ressources de dimension pour la taille d'écran différente

Essayez sdp bibliothèque de Intuit. Il est très pratique pour résoudre les problèmes de l'unité, et vous pouvez soutenir rapidement plusieurs écrans .

Utilisation

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

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

Attention

Utilisez-le avec soin! Dans la plupart des cas, vous avez encore besoin de 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 bibliothèque GitHub .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top