Comment faire dp, dip, ppp, ppp, les pixels et les pouces?

j'ai lu dp, dip, px, mesures sp , mais j'ai encore quelques questions à propos de dp/dpi vs ppi vs px vs pouces. Je ne suis pas en mesure de les comparer... est un pouce plus grands?

Ils disent 160 dpi signifie 160 pixels par pouce. Est-ce que cela signifie que 1 pouce contient 160 pixels?

ils disent aussi 1 pixel sur un écran de 160 dpi = 1 dp. Cela signifie-t-il que 1 pixel et 1 dp sont égaux?

et enfin, pourquoi on utilise dp au lieu de px? Je comprends que c'est idéal, mais pourquoi ?

22
demandé sur Community 2011-12-12 22:15:29

5 réponses

vous devriez (presque) toujours utiliser des unités de dimensionnement flexibles, comme dp , qui sont des Pixels indépendants de la densité, parce que 300px sur un appareil n'est pas nécessairement la même quantité d'écran immobilier que 300px sur un autre. La plus grande implication pratique est que votre disposition serait considérablement différente sur des appareils avec une densité différente de celle visée par votre conception.

  • dp ou dip signifie Pixels indépendants de la densité
  • dpi ou ppi désigne des Points (ou Pixels) Par Pouce
  • inch est une mesure physique connecté à taille réelle de l'écran
  • px Pixels - un pixel occupe une surface d'écran arbitraire en fonction de la densité.

par exemple, sur un écran 160dpi , 1dp == 1px == 1/160in , mais sur un écran 240dpi , 1dp == 1.5px . Donc pas de, 1dp != 1px . Il y a exactement un cas quand 1dp == 1px , et c'est sur un écran 160dpi . Les unités de mesure physiques comme les pouces devraient jamais faire partie de votre conception-c'est-à-dire, à moins que vous ne faites une règle.

une formule simple pour déterminer combien de pixels 1dp s'établit à est px = dp * (dpi / 160) .

41
répondu Chris Cashwell 2017-09-17 15:25:53

Quel est le rapport entre dp, dip, dpi, ppi, pixels et pouces?

aux fins du développement android:

dp = dip
dpi = ppi
inch x dpi = pixels
dp = 160 x inch
dp = 160*pixels/dpi

Donc, sur un 160dpi téléphone (mdpi):

2 inches = 320 dp
2 inches = 320 pixels

sur un téléphone 180 dpi:

2 inches = 320 dp
2 inches = 360 pixels

notez que 2 pouces est toujours 320dp, indépendamment de la taille de l'écran. Un dp est une distance physique de 1/160ème de pouce.

la formule dp to pixels est intéressante:

dp = 160*pixels/dpi

est l'équivalent de:

dp = pixels/(dpi/160)

dpi/160 est un facteur intéressant. C'est la densité relative par rapport à la bin mdpi d'android et le montant que vous devez mettre à l'échelle vos graphiques pour les différents bacs de ressources. Vous verrez ce facteur mentionné à plusieurs reprises sur cette page, 0,75 étant le facteur à ldpi.

4
répondu Sam 2015-09-25 08:32:14

dp est une mesure physique comme des pouces. (Oui, il est. Lire sur.)

"Une dp correspond à la taille physique d'un pixel à 160 dpi" ( https://developer.android.com/training/multiscreen/screendensities.html#TaskUseD )

la taille physique d'un pixel à 160 dpi est exactement 1/160E de pouce. Donc la taille d'un dp est 1/160e d'un pouce. 160 dp = 1 pouce.

Px est un peu arbitraire l'unité de mesure sur un écran.

pour des exemples de ce que dp convertit en in px sur différents appareils, voir ici:

https://stackoverflow.com/a/39495538/984003

4
répondu user984003 2017-05-23 10:30:47

DP est la résolution lorsque vous seul facteur de la taille physique de l'écran. Lorsque vous utilisez DP, il ajustera votre mise en page à d'autres écrans de taille similaire avec des densités de pixels différentes.

de temps en temps vous voulez réellement des pixels cependant, et quand vous traitez avec les dimensions dans le code vous êtes toujours face à de vrais pixels, à moins que vous les convertissiez.

0
répondu Santhosh Shettigar 2011-12-12 18:24:51

je vais vous expliquer en utilisant un exemple.

float density = context.getResources().getDisplayMetrics().density;
float px = someDpValue * density;
float dp = somePxValue / density;

densité égale

.75 on ldpi (120 dpi)
1.0 on mdpi (160 dpi; baseline)
1.5 on hdpi (240 dpi)
2.0 on xhdpi (320 dpi)
3.0 on xxhdpi (480 dpi)
4.0 on xxxhdpi (640 dpi)

ainsi, par exemple,

J'ai un Samsung S5 avec 432 dpi ( http://dpi.lv/#1920*1080@5.1 " ).

, density = 432/160 = phone's dpi/baseline = 2.7

disons que ma barre du haut est 48dp . Ceci est référencé à baseline (160dpi) .

Donc, w.r.t mon S5, il sera 48dp * 2.7 .

alors si je veux voir la hauteur réelle:

il sera (48dp * 2.7) / 432 dpi = 0.3 inches .

0
répondu kalan 2015-11-28 06:45:32