Ce convertisseur astucieux le démontre le mieux , à mon avis. Il est également extrêmement utile pour exporter des sprites depuis Photoshop ou pour concevoir votre mise en page pour une dimension physique.
px Pixels - correspond aux pixels réels sur l'écran.
en pouces - en fonction de la taille physique de l'écran.
1 pouce = 2,54 centimètres
mm Millimètres - basé sur la taille physique de l'écran.
pt points - 1/72 de pouce en fonction de la taille physique de l'écran.
dp ou dip Pixels indépendants de la densité - 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 changera 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" soit plus cohérent avec "sp".
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 cet appareil lors de la spécification des tailles de police, afin qu'elles soient ajustées à la fois pour la densité de l'écran et les préférences de l'utilisateur.
même si elles devraient être la même chose, j'ai tendance à avoir beaucoup de problèmes avec dp alors que tout fonctionne bien avec dip
DallaRosa
247
Une remarque à propos de db / sp qui n'est pas totalement évidente: la mise à l'échelle qui se produit pour ceux-ci ne dépend pas de la densité réelle des périphériques (dpi) mais du "bucket" de densités dans lequel il tombe: les buckets disponibles sont: 120,160,240,320. Cela peut entraîner des problèmes de gestion des écrans qui sont sensiblement différents mais qui sont identiques.
Fraggle
15
Notez que la documentation ne mentionne plus du tout "dip", juste "dp", bien que le compilateur semble toujours accepter "dip".
Adam Rosenfield
15
@android_developer (5 commentaires ci-dessus) dpn'a pas exactement la même longueur physique. (Bien qu'il soit proche.) Voir le commentaire de @ Fraggle sur le bucketing. Cela signifie que 48dp sera d'environ 8 mm (0,3 pouce), mais il peut varier jusqu'à 11 mm.
intrepidis
11
La raison du regroupement est que les développeurs peuvent tester leurs applications sur quelques appareils de densités différentes et être sûrs que les dispositions seront identiques sur une multitude d'appareils. Ainsi, même si la taille physique des boutons, etc. change un peu, l'aspect général d'une activité sera le même.
intrepidis
685
À peu près tout à ce sujet et comment obtenir le meilleur support pour plusieurs écrans de différentes tailles et densités est très bien documenté ici:
Taille d'é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 extra-large.
Densité d'écran
Le nombre de pixels dans une zone physique de l'écran; généralement appelé dpi (points par pouce). Par exemple, un écran à densité "faible" a moins de pixels dans une zone physique donnée, par rapport à un écran à densité "normale" ou "élevée". Pour plus de simplicité, Android regroupe toutes les densités d'écran réelles en six densités généralisées: faible, moyenne, élevée, extra-haute, extra-extra-haute et extra-extra-extra-haute.
Orientation Orientation de l'écran du point de vue de l'utilisateur. Il s'agit de paysage ou de portrait, ce qui signifie que le rapport d'aspect de l'écran est respectivement large ou haut. Sachez que non seulement différents appareils fonctionnent par défaut dans différentes orientations, mais que l'orientation peut changer lors de l'exécution lorsque l'utilisateur fait pivoter l'appareil.
Résolution 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 devraient porter que sur 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 virtuel que vous devez 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é équivaut à un pixel physique sur un écran à 160 dpi, qui est la densité de base supposée par le système pour un écran à 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, si nécessaire, en fonction de la densité réelle de l'écran utilisé. La conversion des unités de dp aux pixels de l' écran est simple:
px = dp * (dpi / 160). Par exemple, sur un écran à 240 dpi, 1 dp équivaut à 1,5 pixels physiques. Vous devez toujours utiliser des unités dp lors de la définition de l'interface utilisateur de votre application, afin d'assurer un affichage correct de votre interface utilisateur sur des écrans de densités différentes.
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 de développement de prise en charge des écrans. En plus de cela, c'est toujours une bonne chose de connaître le nombre réel de périphériques actifs qui ont une configuration d'écran particulière.
Donc, si vous utilisez dp pour un bouton et sp pour la taille de la police du texte du bouton, que se passe-t-il lorsque l'utilisateur commence la mise à l'échelle? Le texte s'agrandira, mais le bouton tiendra-t-il compte en l'agrandissant également?
Wytze
11
@Wytze, non. Pour les choses où l'ajustement du texte peut être un problème, j'utiliserais juste dip afin que les choses ne débordent pas.
eski
12
@Wytze Et moi, au contraire, j'utilise sp pour le texte et tout ce qu'il contient. Par exemple, si j'ai un bouton avec une taille fixe et un texte à l'intérieur, j'attribuerais la taille du bouton en sp afin qu'il évolue en cas de besoin aussi. Sinon, l'utilisateur sera ennuyé d'avoir augmenté la taille du texte, et cela n'a pas augmenté. Bien sûr, la mise en page doit être suffisamment flexible pour le permettre.
Malcolm
2
Si vos concepteurs ne laissent pas de place pour les éléments basés sur du texte à mettre à l'échelle en fonction de la taille sp, une option consiste à passer à la mise en page que vous utiliseriez pour un appareil plus étroit, puis à tout mettre à l'échelle uniformément par (DisplayMetrics.scaledDensity / DisplayMetrics. densité).
John Mellor
@Sam, le manque d'espace libre entraînera également des problèmes pendant i18n
réduisant l'activité
347
Je développerai davantage sur la façon dont dp se convertit exactement en px:
Si elle s'exécute sur un périphérique mdpi, une 150 x 150 pximage prendra 150 * 150 dpde l'espace sur l'écran.
Si elle est exécutée sur un périphérique hdpi, une 150 x 150 pximage prendra 100 * 100 dpde l'espace sur l'écran.
Si elle s'exécute sur un périphérique xhdpi, une 150x150 pximage prendra 75 * 75 dpde l'espace sur l'écran.
L'autre sens: disons, vous voulez ajouter une image à votre application et vous en avez besoin pour remplir un 100 * 100 dpcontrôle. Vous devrez créer des images de tailles différentes pour les tailles d'écran prises en charge:
Comment calculons-nous les pixels pour hdpi, ldpi, mdpi etc. J'ai entendu dire que nous utilisons cette formule..px = dp * (dpi / 160); pouvez-vous m'expliquer avec cette formule plz?
Rakesh patanga
@Rakeshpatanga À une densité de 160 dpi, 1 px = 1 dp (le pixel physique et l'abstraction dp sont les mêmes). Autrement dit, pour un seul dp, nous avons (1) * (160/160) = 1, ou exactement 1 px. À une densité plus élevée de 320 dpi, un seul dp est (1) * (320/160) = 2 pixels, et deux dp sont (2) * (320/160) = 4 px.
samis
Alignez-les en monospace pour voir: | 1dp |, | ___ | ___ | 160, | _ | _ | _ | _ | 320 (mettre les sauts de ligne après les virgules). | _ | = 1 p i x el.
samis
re "Vous devrez créer des images de tailles différentes pour les tailles d'écran prises en charge:" Cela dépend. Pour les petites images à contraste élevé , par exemple les icônes, il est sage de créer au moins la plus petite taille (pour être sûr qu'elle sera claire) plus une taille assez grande (pour que les grandes versions ne soient pas floues). Mais même pour les icônes, vous pouvez autoriser une image à l'échelle sur une gamme de tailles, à des densités plus élevées. Pour les photographies, spécifiez simplement la zone d'affichage que vous souhaitez qu'elle remplisse et comptez sur la mise à l'échelle de l'appareil.
ToolmakerSteve
286
px - Pixels - le point par échelle correspond aux pixels réels sur l'écran.
i - Pouces - basé sur la taille physique de l'écran.
mm - Millimètres - basé sur la taille physique de l'écran.
pt - Points - 1/72 de pouce basé sur la taille physique de l'écran.
dp - 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 on dpest un pixel sur un écran de 160 dpi. Le rapport dp / pixel changera avec la densité de l'écran, mais pas nécessairement en proportion directe. Remarque: Le compilateur accepte les deux dipet dp, bien qu'il dpsoit plus cohérent avec sp.
sp - Pixels indépendants de l'échelle - c'est comme ledp unité, mais il est également mis à l'échelle par la préférence de taille de police de l'utilisateur. Il est recommandé d'utiliser cet appareil lors de la spécification des tailles de police, afin qu'elles soient ajustées à la fois pour la densité de l'écran et les préférences de l'utilisateur.
Prenons l'exemple de deux écrans de même taille, mais l'un a une densité d'écran de 160 dpi (points par pouce, c'est-à-dire des pixels par pouce) et l'autre est de 240 dpi.
Lower resolution screen Higher resolution, same size
PhysicalWidth1.5 inches 1.5 inches
DotsPerInch(“dpi”)160240Pixels(=width*dpi)240360Density(factor of baseline 160)1.01.5Density-independent pixels 240240(“dip”or“dp”or“dps”)Scale-independent pixels
(“sip”or“sp”)Depends on user font size settings same
De plus, vous devez avoir une compréhension claire des concepts suivants:
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.
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 à densité "faible" a moins de pixels dans une zone physique donnée, par rapport à un écran à densité "normale" ou "élevée". Pour plus de simplicité, Android regroupe toutes les densités d'écran réelles en quatre densités généralisées: faible, moyenne, élevée et extra élevée.
Orientation:
L'orientation de l'écran du point de vue de l'utilisateur. Il s'agit de paysage ou de portrait, ce qui signifie que le rapport d'aspect de l'écran est respectivement large ou haut. Sachez que non seulement différents appareils fonctionnent par défaut dans différentes orientations, mais que l'orientation peut changer lors de l'exécution lorsque l'utilisateur fait pivoter l'appareil.
Résolution:
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 devraient porter que sur 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 pixels virtuels que vous devez 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é équivaut à un pixel physique sur un écran à 160 dpi, qui est la densité de base supposée par le système pour un écran à 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, 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 à 240 dpi, 1 dp équivaut à 1,5 pixels physiques. Vous devez toujours utiliser des unités dp lors de la définition de l'interface utilisateur de votre application, afin d'assurer un affichage correct de votre interface utilisateur sur des écrans de densités différentes.
Cela signifie-t-il alors que tout ce que vous concevez en utilisant les unités dp occupera toujours le même% de l'écran, quelle que soit la densité de pixels de l'appareil? En supposant des proportions identiques.
DBIT
199
dpest dip. Utilisez-le pour tout (marge, rembourrage, etc.).
À utiliser sppour {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 difficiles à faire.
Voyez la différence entre px, dpet spsur différentes tailles d'écran.
Source 3 : (les données de la source 3 sont données ci-dessous)
Ce sont des valeurs de dimension définies en XML. Une dimension est spécifiée avec un nombre suivi d'une unité de mesure. Par exemple: 10px, 2in, 5sp. Les unités de mesure suivantes sont prises en charge par Android:
dp
Pixels indépendants de la densité - Unité abstraite basée sur la densité physique de l'écran. Ces unités sont relatives à un écran de 160 dpi (points par pouce), sur lequel 1dp est à peu près égal à 1px. Lors de l'exécution sur un écran de densité plus élevée, le nombre de pixels utilisés pour dessiner 1dp est augmenté d'un facteur approprié pour le dpi de l'écran. De même, sur un écran de densité inférieure, le nombre de pixels utilisés pour 1dp est réduit. Le rapport dp / pixel changera avec la densité de l'écran, mais pas nécessairement en proportion directe. L'utilisation d'unités dp (au lieu d'unités px) est une solution simple pour redimensionner correctement les dimensions de la vue dans votre mise en page pour différentes densités d'écran. En d'autres termes, il assure la cohérence des tailles réelles de vos éléments d'interface utilisateur sur différents appareils.
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 cet appareil lors de la spécification des tailles de police, afin qu'elles soient ajustées à la fois pour la densité de l'écran et les préférences de l'utilisateur.
pt
Points - 1/72 de pouce en fonction de la taille physique de l'écran.
px
Pixels - Correspond aux pixels réels sur l'écran. Cette unité de mesure n'est pas recommandée car la représentation réelle peut varier d'un appareil à l'autre; chaque appareil peut avoir un nombre différent de pixels par pouce et peut avoir plus ou moins de pixels totaux disponibles sur l'écran.
mm
Millimètres - Basé sur la taille physique de l'écran.
dans
Pouces - Basé sur la taille physique de l'écran.
Remarque: Une dimension est une ressource simple qui est référencée à l'aide de la valeur fournie dans l'attribut name (pas le nom du fichier XML). En tant que tel, vous pouvez combiner des ressources de dimension avec d'autres ressources simples dans un seul fichier XML, sous un élément.
getDimensionPixelOffset arrondit vers le bas, getDimensionPixelSize arrondit vers le haut.
Eugen Pechanec
102
px
Pixels - correspond aux pixels réels sur l'écran.
dp ou dip
Pixels indépendants de la densité - 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.
Utilisation de dp:
Indépendance de densité - Votre application atteint «l'indépendance de densité» lorsqu'elle préserve la taille physique (du point de vue de l'utilisateur) des éléments de l'interface utilisateur lorsqu'ils sont affichés sur des écrans de densités différentes. (c.-à-d.) L'image doit avoir la même taille (pas agrandie ou rétrécie) dans différents types d'écrans.
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.
Unité de pixels virtuels que vous devez utiliser lors de la définition de la mise en page de l'interface utilisateur pour exprimer les dimensions ou la position de la mise en page de manière indépendante de la densité. Comme décrit ci-dessus, le pixel indépendant de la densité équivaut à un pixel physique sur un écran à 160 dpi, qui est la densité de base supposée par le système pour un écran à 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, 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 à 240 dpi, 1 dp équivaut à 1,5 pixels physiques. Vous devez toujours utiliser des unités dp lors de la définition de l'interface utilisateur de votre application, afin d'assurer un affichage correct de votre interface utilisateur sur des écrans de densités différentes.
Comprendre le pixel en dp et vice versa est très essentiel (en particulier pour donner des valeurs de dp exactes à 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 Nexus4.If24 pixels to be converted to dp andif it is a Nexus4 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 or320dpi)Optional(screen size):4.7" diagonal
Essayez d'obtenir toutes les valeurs de pixels en nombres pairs de l'équipe créative. Sinon, la perte de précision se produira lors de la multiplication par 0,5.
px
C'est expliqué ci-dessus. Essayez d'éviter dans les fichiers de mise en page. Mais il y a des cas où le px est requis. par exemple, ligne de séparation ListView. px est mieux ici pour donner une ligne d'un pixel comme séparateur 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 alors que la taille des polices de l'appareil changera (c'est-à-dire Affichage -> Polices sur l'appareil). Si vous souhaitez conserver une police de taille statique dans l'application, vous pouvez donner la dimension de la police en dp. Dans un tel cas, cela 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, sp est recommandé.
Vous pouvez voir la différence entre pxet à dppartir de l'image ci-dessous, et vous pouvez également constater que le pxet dpne peut pas garantir les mêmes tailles physiques sur les différents écrans.
@EnesBattal, je pense que parce que le dp n'est pas une taille physique aiguë, c'est une valeur approximative. Citant de CapTech: "dp - Il s'agit d'une unité indépendante de la densité, mais la taille physique d'un seul" dp "n'est qu'approximativement la même sur chaque densité d'écran. Il y a environ 160" dp "dans un pouce. Un facteur d'échelle, selon sur le seau de densité de l'appareil, est appliqué pour convertir "dp" en nombre de pixels à 160 dpi. Le nombre de pixels qu'un "dp" se traduit varie en fonction du pixel sur la densité de l'écran et du seau de densité auquel tombe l'appareil dans."
Zephyr
3
@RuchirBaronia, je pense que le DP ou le DIP est toujours là dans apk, car l'apk ne sait pas encore avec quel type de densité d'écran il fonctionnera, donc l'indépendance de l'appareil doit être conservée.
Zephyr
79
Tout ce qui concerne la taille du texte et l'apparence doit utiliser spou pt. Alors que tout ce qui concerne la taille des contrôles, les dispositions, etc. doit être utilisé avec dp.
Vous pouvez utiliser à la fois dpet dipà ses emplacements.
Il y a beaucoup de discussions sur l'utilisation de "sp" pour les tailles de police, et bien que j'apprécie le point, je ne pense pas que ce soit la bonne chose à faire du point de vue du design. Vous pouvez finir par casser votre conception si l'utilisateur a une sélection de taille de police bancale, et l'utilisateur finira par blâmer l'application , et non ses propres choix de vie.
De plus, si vous prenez une application sp-font sur une tablette à 160 dpi, vous constaterez que tout évolue ... mais votre police, qui va paraître minuscule en comparaison. Ce n'est pas beau.
Bien que l'idée des polices "sp" ait un bon cœur, c'est une mauvaise idée. Restez avec dp pour tout.
Vous savez que le facteur d'échelle de police appliqué spest un facteur, non? Tout ce qui affecte dpaffectera également sp. Cela dit, il est toujours préférable de spécifier des tailles de police en utilisant dpplutôt que spsi votre mise en page est très serrée et que les plus grandes tailles ne conviennent pas - il vaut mieux avoir un texte plus petit que ce que l'utilisateur veut qu'une mise en page complètement foirée. Mais dans le premier cas, vous devez toujours vous efforcer de respecter la préférence de taille de police de l'utilisateur - même le plus grand paramètre n'est pas si grand.
Karu
67
sp = pixel indépendant de l'échelle
dp = dip = pixels indépendants de la densité
dpi = points par pouce
Nous devons éviter d'utiliser sp .
Nous devons utiliser dp pour prendre en charge plusieurs écrans.
Android prend en charge différentes résolutions d'écran
ldpi (faible) ~ 120 dpi
mdpi (moyen) ~ 160 dpi
hdpi (élevé) ~ 240 dpi
xhdpi (extra-haute) ~ 320 dpi
xxhdpi (extra-extra-élevé) ~ 480 dpi
xxxhdpi (extra-extra-extra-élevé) ~ 640 dpi
Un périphérique ldpi 120 dp a 120 pixels dans une 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 de l'appareil à 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 n'importe quel appareil:
Un très bon tutoriel pour comprendre est: http: /vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer
Kushal
5
"Nous devons éviter d'utiliser sp" Pourquoi est-ce? Vous devez utiliser sp lorsque vous traitez avec des tailles de police car il prend en compte la taille de texte préférée de l'utilisateur, developer.android.com/training/multiscreen/screendensities.html
ci_
J'ai répondu par rapport à la perspective de la mise en page .. Veuillez lire le lien que vous avez fourni "vous devez donc utiliser cette unité de mesure lors de la définition de la taille du texte (mais jamais pour les tailles de mise en page)."
Kushal
La question était "Différence entre px, dp, dip et sp dans Android?" votre réponse disait "Nous devons éviter d'utiliser sp". Il n'y avait aucune mention de "perspective de mise en page" nulle part.
ci_
Oui .. dp et dip sont les mêmes ... utilisés de manière interchangeable ... Ma réponse résout-elle votre question?
Kushal
61
La différence entre dpet les spunités mentionnées comme « préférence de taille de police de l'utilisateur » par les réponses copiées à partir de la documentation officielle peut être vue au moment de l'exécution en changeantSettings->Accessibility->Large Text option.
Large TextL'option force le texte à 1.3s'agrandir.
Taille de l' écran en Androidsont regroupées en catégories small, medium, large, extra large, double-extraet triple-extra. La densité d'écran est la quantité de pixels dans une zone (comme le pouce) de l'écran. Il est généralement mesuré en points par pouce (dpi). La densité de l'écran est regroupée en faible, moyenne, élevée et extra haute. La résolution est le nombre total de pixels sur l'écran.
dp: pixel indépendant de la densité, il varie en fonction de la densité de l'écran. Dans un écran de 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 d'Android, dip était utilisé et changé plus tard en dp.
sp: Scale Independent Pixel, mis à l'échelle en fonction de la préférence de taille de police de l'utilisateur. Les polices doivent utiliser sp.
px: notre pixel standard habituel qui correspond au pixel de l'écran.
en: pouces, par rapport à la taille d'écran physique.
mm: millimètres, par rapport à la taille d'écran physique.
pt: 1/72 de pouce, par rapport à la taille d'écran physique.
Formule de 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 en fonction de la taille du compartiment de 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) et 640 (xxxhdpi). Le rapport suggéré par Google pour la conception est de 3: 4: 6: 8: 12 pour ldpi: mdpi: hdpi: xhdpi: xxhdpi
Une image 150px X 150px occupera,
150 dp X 150 dp d'espace d'écran en mdpi
Espace d'écran 100 dp X 100 dp en hdpi
75 dp X 75 dp d'espace d'écran en xhdpi
Vous pouvez utiliser la calculatrice DPI suivante pour fixer vos tailles d'image et autres dimensions lorsque vous souhaitez avoir une conception d'interface utilisateur uniforme sur tous les appareils Android.
Veuillez lire la réponse du wiki de la communauté. Vous trouverez ci-dessous quelques informations à prendre en considération en plus des réponses ci-dessus. La plupart des développeurs Android manquent cela lors du développement d'applications, donc j'ajoute ces points.
sp = pixel indépendant de l'échelle
dp = pixels indépendants de la densité
dpi = densité de pixels
J'ai parcouru les réponses ci-dessus ... ne les trouvant pas exactement correctes. sp pour la taille du texte, dp pour les limites de mise en page - standard. Mais sp pour la taille du texte rompra la mise en page s'il est utilisé avec négligence dans la plupart des appareils.
sp prend la taille du texte de l'appareil, tandis que dp prend celle du standard de densité de l'appareil (ne change jamais dans un appareil) Disons que le texte 100sp peut occuper 80% de l'écran ou 100% de l'écran selon la taille de police définie dans l'appareil
Vous pouvez également utiliser sp pour les limites de 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 tenant compte de l'UX.
Ne pas utiliser sp pour le texte dans la barre d'outils (peut utiliser les dimens android disponibles pour différentes tailles d'écran avec dp)
N'utilisez pas sp pour le texte dans les petits boutons délimités, le texte très petit, etc.
Certaines personnes utilisent une énorme taille de POLICE 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 lorsque l'utilisateur modifie ses paramètres.
De même, si vous avez une seule application prenant en charge toutes les dimensions, l'ajout d'actifs xxxhdpi augmente considérablement la taille de l'application. Mais maintenant, les téléphones xxxhdpi sont courants, nous devons donc inclure au moins les actifs 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.
Notez également que les gens utilisent une police personnalisée dans leur téléphone. L'absence de police peut donc causer des problèmes d'espacement et tout. Supposons que la taille du texte 12sp pour une police personnalisée peut prendre quelques pixels de plus que la police par défaut.
Je suis tombé sur un bon article sur la conception d'interface utilisateur d'applications Android pour différentes résolutions d'écran, et je voudrais le laisser ici juste pour quelqu'un qui recherche dans ce domaine. Oui, je sais que c'est en quelque sorte décrit dans Google docs (et mentionné dans les articles ci-dessus), je l'ai lu mais ce n'était pas bon pour moi (ouais, je peux être trop stupide)). Je ne savais pas comment concevoir des mises en page capables de gérer différentes tailles d'écran. Je déteste le concept DP et ainsi de suite, lorsque j'ai besoin d'implémenter une disposition d'interface utilisateur "flexible" pour différents écrans. (Hé les développeurs iOS - oui, vous avez raison, c'est le concept Storyboard).
Android n'a pas un mauvais concept d'interface utilisateur, mais il manque malheureusement les fonctionnalités de Storyboard iOS. Concevoir une interface utilisateur flexible dans Android n'est pas chose facile (au mieux).
Voici l'article qui m'a aidé à comprendre ce qu'il faut faire dans Android pour créer des dispositions pour différentes tailles d'écran:
Comment concevoir l'interface utilisateur pour les applications Android pour différentes tailles d'écran
Pour concevoir une interface utilisateur d'application pour différentes tailles d'écran, notre conception initiale doit respecter un espace minimum requis pour chaque taille d'écran. Android définit une taille minimale (en dp) pour chaque type d'écran généralisé. Voici une directive de taille d'écran Android.
Lorsque nous obtenons la taille de l'écran en dp, il ne nous suffit pas de concevoir l'interface utilisateur de l'application Android. Pour chaque taille d'écran, nous devons préparer des graphiques et des images bitmap pour chaque densité. Voici un guide de densité d'écran Android.
Pour un calcul facile, nous pouvons suivre le rapport d'échelle 3: 4: 6: 8 entre les quatre densités généralisées. Si nous créons une image de 36 × 36 pixels pour le périphérique ldpi, la taille des images de densité de repos sera de 48 × 48 pour mdpi, 72 × 72 pour hdpi et 96 × 96 pour xhdpi.
Comment concevoir l'interface utilisateur des applications Android dans Photoshop
De nombreux concepteurs ont des problèmes pour concevoir l'interface utilisateur de l'application Android dans Photoshop ou d'autres outils de conception graphique basés sur les pixels en raison de l'unité indépendante de la densité, dp. Les concepteurs ne savent pas comment mapper dp en pixel. Google ne leur donne pas non plus de guide de conception d'interface utilisateur Android clair, bien qu'ils fournissent une formule de base pour la traduction en dp et en pixels.
Comme définition d'Android, 1pd équivaut à 1px sous 160 dpi (mdpi). Nous voulons donc concevoir une application Android pour un appareil Android xlarge avec une densité mdpi, nous pouvons définir notre taille d'interface utilisateur en pixels comme 960 pixels de largeur et 720px de hauteur; Suivez la même règle de mappage, nous pouvons obtenir les directives de conception de l'interface utilisateur de la taille de l'écran de l'application Android:
Le nombre de pixels représentés dans une unité de dp augmentera à mesure que la résolution d'écran augmente (lorsque vous avez plus de points / pixels par pouce). Inversement sur les appareils avec une résolution inférieure, le nombre de pixels représentés dans l'unité de dp diminuera. Comme il s'agit d'une unité relative, elle doit avoir une base de référence à comparer. Cette ligne de base est un écran de 160 dpi. Voici l'équation:px = dp * (dpi / 160).
2) sp: (scale independent pixels)
Cette unité est mise à l'échelle en fonction du dpi de l'écran (similaire au dp) ainsi que de la préférence de taille de police de l'utilisateur.
Taille de l' écran dans Android sont regroupées en catégories ldpi, mdpi, hdpi, xhdpi, xxhdpiet xxxhdpi. La densité d'écran est la quantité de pixels dans une zone (comme le pouce) de l'écran. Elle est généralement mesurée 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 souhaitez donner en termes de pixels absolus pour la largeur ou la hauteur. Non recommandé.
DP/DIP(Density pixels / Density independent pixels):
dip == dp. Dans les versions antérieures d'Android, dip était utilisé et remplacé par la suite dp. C'est une alternative à px.
En règle générale, nous n'utilisons jamais pxcar c'est une valeur absolue. Si vous utilisez pxpour définir la largeur ou la hauteur, et si cette application est téléchargée sur différents appareils de taille d'écran, cette vue ne s'étirera pas selon la taille d'origine de l'écran.
dpest fortement recommandé d'utiliser à la place de px. À utiliser dpsi vous souhaitez mentionner la largeur et la hauteur pour agrandir et réduire dynamiquement en fonction des tailles d'écran.
si nous donnons dp/dip, android calculera automatiquement la taille des pixels sur la base d'un écran de 160 pixels.
SP(Scale independent pixels):
mis à l'échelle en fonction de la préférence de taille de police de l'utilisateur. Les polices doivent utiliser sp.
en mentionnant les tailles de police adaptées à différentes tailles d'écran, utilisez sp. Ceci est similaire à dp.Utilisez en spparticulier pour que les tailles de police augmentent et diminuent dynamiquement en fonction des tailles d'écran
La documentation Android indique:
lors de la spécification des dimensions, utilisez toujours l'un dpou l' autre ou les spunités. A dpest un pixel indépendant de la densité qui correspond à la taille physique d'un pixel à 160 dpi. An spest la même unité de base, mais est mis à l'échelle par la taille de texte préférée de l'utilisateur (c'est un pixel indépendant de l'échelle), vous devez donc utiliser cette unité de mesure lors de la définition de la taille du texte
L'écran d'un téléphone mobile est composé de milliers de minuscules 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é est élevé, plus il devient net et rend l'écran du smartphone plus lisible.
La résolution d'écran est mesurée en termes de nombre de pixels sur 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 la réflexion sur les écrans en termes de pixels ignore la notion de taille physique, qui pour un appareil tactile est vraiment très importante.
Le pixel indépendant de la densité (dp ou dip) permet au concepteur de créer des ressources qui apparaissent de la manière attendue, quelle que soit 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 des points par pouce
Donc, à 320 dpi, 1 dp est égal à 2 px.
Formule
px / dp = dpi / 160 dpi
Les points par pouce (dpi) sont une mesure de la netteté (c'est-à-dire la densité des points éclairés) sur un écran d'affichage. Les points par pouce pour une résolution d'image donnée différeront en fonction de la taille globale de l'écran, car le même nombre de pixels sont répartis sur un espace différent.
Travailler avec des pixels indépendants de la densité nous aide à faire face à une situation comme celle où vous avez deux appareils avec la même résolution en pixels, mais un espace différent. Supposons que dans un cas, une tablette et un téléphone aient la même résolution en pixels 1280 x 800 pixels (160 dpi) et 800 x 1280 pixels (320 dpi) respectivement.
Maintenant, comme une tablette est à la densité de base (160 dpi), ses tailles de pixels physiques et indépendantes de la densité sont les mêmes, 1280 par 800. Le téléphone, d'autre part, a une densité de pixels plus élevée, il a donc la moitié autant de pixels indépendants de la densité que physique pixels. Donc, un téléphone a 400 x 640 pixels indépendants de la densité. Ainsi, l'utilisation d'un pixel indépendant de la densité permet de visualiser mentalement plus facilement 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 est 800 par 1280 pixels (320 dpi), et l'autre est 400 par 640 pixels (160 dpi), nous n'avons pas besoin de définir totalement différentes dispositions pour ces deux appareils, car nous pouvons mesurer les actifs en termes de pixels indépendants de la densité, ce qui est le même pour les deux appareils.
800 x 1280 pixels (320 dpi) = 400 x 640 pixels indépendants de la densité (dp)
400 x 640 pixels (160 dpi) = 400 x 640 pixels indépendants de la densité (dp)
Mettre à l'échelle les pixels indépendants (sp) est l'unité préférée pour la taille de la police. À des fins d'accessibilité, Android permet aux utilisateurs de personnaliser la taille de police de leur appareil. Les utilisateurs qui ont du mal à lire du texte peuvent augmenter la taille de police de leur appareil. Vous pouvez normalement trouver cette option dans les paramètres d'affichage de votre téléphone ou 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 sp est exactement identique à 16 dp lorsque la taille de police de l'appareil est normale ou 100%. Mais lorsque la taille de police de l'appareil est grande, par exemple 125%, 16 sp se traduira par 20 dp ou 1,25 fois 16.
Si vous utilisez dp comme unité de taille de police, ce morceau de texte a une taille physique spécifique, peu importe si l'utilisateur a personnalisé la taille de police du périphérique. L'utilisation d'unités SP améliorera l'expérience des personnes malvoyantes.
Vous devez l'utiliser avec des textes car il est automatiquement mis à l'échelle en fonction de la taille de police utilisée par l'utilisateur dans son appareil.
px: pixel ou élément d'image est le seul point sur l'écran
La densité et la résolution des pixels de l'écran varient selon la plate-forme. Les pixels indépendants de l'appareil et les pixels évolutifs sont des unités qui offrent un moyen flexible de s'adapter à une conception sur toutes les plateformes.
Calcul de la densité de pixels
Le nombre de pixels qui s'inscrivent dans un pouce est appelé densité de pixels. Les écrans haute densité ont plus de pixels par pouce que les écrans basse densité ....
Le nombre de pixels qui s'inscrivent dans un pouce est appelé densité de pixels. Les écrans haute densité ont plus de pixels par pouce que ceux à faible densité. Par conséquent, les éléments d'interface utilisateur des mêmes dimensions de pixels apparaissent plus grands sur les écrans à faible densité et plus petits sur les écrans à haute densité.
Pour calculer la densité d'écran, vous pouvez utiliser cette équation:
Densité de l'écran = largeur (ou hauteur) de l'écran en pixels / largeur (ou hauteur) de l'écran en pouces
Indépendance de densité
La densité et la résolution des pixels de l'écran varient selon la plate-forme. Les pixels indépendants de l'appareil et les pixels évolutifs sont des unités qui offrent un moyen flexible de s'adapter à une conception sur toutes les plateformes.
Calcul de la densité de pixels Le nombre de pixels pouvant tenir dans un pouce est appelé densité de pixels . Les écrans haute densité ont plus de pixels par pouce que les écrans basse densité ....
L'indépendance de densité se réfère à l'affichage uniforme des éléments d'interface utilisateur sur des écrans de densités différentes.
Les pixels indépendants de la densité , écrits en dp (prononcés « creux »), sont des unités flexibles qui évoluent pour avoir des dimensions uniformes sur n'importe quel écran. Les interfaces utilisateur matérielles utilisent des pixels indépendants de la densité pour afficher les éléments de manière cohérente sur des écrans de densités différentes.
Écran basse densité affiché avec indépendance de densité
Écran haute densité affiché avec indépendance de densité
Pixels (px) - correspond aux pixels réels sur l'écran. Ceci est utilisé si vous souhaitez donner en termes de pixels absolus pour la largeur ou la hauteur.
Pixels indépendants de la densité (dp ou dip) - 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 changera 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" soit plus cohérent avec "sp".
Pixels indépendants de l'échelle (sp) - 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 cet appareil lors de la spécification des tailles de police, afin qu'elles soient ajustées à la fois pour la densité de l'écran et les préférences de l'utilisateur.
Je veux fournir un moyen simple 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. C'est juste pratique pour nous d'écrire 50dp, 60dpplutôt que 50/160 inchou 60/160 inch, car on dpest juste 1/160 inchquelle que soit la taille d'écran ou la résolution.
Le seul problème est que les ppp android de certains écrans ne sont pas précis. Par exemple, un écran classé à 160 dpi peut avoir 170 dpi en effet. Le résultat du calcul dpest donc flou. Il devrait être approximativement le même que 1/160 inch.
px
,dp
etsp
Réponses:
Dans la documentation pour les développeurs Android :
De Comprendre l'indépendance de la densité dans Android :
Vous trouverez également plus d'informations dans la documentation de conception de Google .
la source
dp
n'a pas exactement la même longueur physique. (Bien qu'il soit proche.) Voir le commentaire de @ Fraggle sur le bucketing. Cela signifie que 48dp sera d'environ 8 mm (0,3 pouce), mais il peut varier jusqu'à 11 mm.À peu près tout à ce sujet et comment obtenir le meilleur support pour plusieurs écrans de différentes tailles et densités est très bien documenté ici:
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 de développement de prise en charge des écrans. En plus de cela, c'est toujours une bonne chose de connaître le nombre réel de périphériques actifs qui ont une configuration d'écran particulière.
la source
Je développerai davantage sur la façon dont dp se convertit exactement en px:
150 x 150 px
image prendra150 * 150 dp
de l'espace sur l'écran.150 x 150 px
image prendra100 * 100 dp
de l'espace sur l'écran.150x150 px
image prendra75 * 75 dp
de l'espace sur l'écran.L'autre sens: disons, vous voulez ajouter une image à votre application et vous en avez besoin pour remplir un
100 * 100 dp
contrôle. Vous devrez créer des images de tailles différentes pour les tailles d'écran prises en charge:100 * 100 px
image pour mdpi150 * 150 px
image pour hdpi200 * 200 px
image pour xhdpila source
px - Pixels - le point par échelle correspond aux pixels réels sur l'écran.
i - Pouces - basé sur la taille physique de l'écran.
mm - Millimètres - basé sur la taille physique de l'écran.
pt - Points - 1/72 de pouce basé sur la taille physique de l'écran.
dp - 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 on
dp
est un pixel sur un écran de 160 dpi. Le rapport dp / pixel changera avec la densité de l'écran, mais pas nécessairement en proportion directe. Remarque: Le compilateur accepte les deuxdip
etdp
, bien qu'ildp
soit plus cohérent avecsp
.sp - Pixels indépendants de l'échelle - c'est comme le
dp
unité, mais il est également mis à l'échelle par la préférence de taille de police de l'utilisateur. Il est recommandé d'utiliser cet appareil lors de la spécification des tailles de police, afin qu'elles soient ajustées à la fois pour la densité de l'écran et les préférences de l'utilisateur.Prenons l'exemple de deux écrans de même taille, mais l'un a une densité d'écran de 160 dpi (points par pouce, c'est-à-dire des pixels par pouce) et l'autre est de 240 dpi.
la source
De plus, vous devez avoir une compréhension claire des concepts suivants:
Taille de l'écran:
Densité d'écran:
Orientation:
Résolution:
Pixel indépendant de la densité (dp):
Référence: site des développeurs Android
la source
dp
estdip
. Utilisez-le pour tout (marge, rembourrage, etc.).À utiliser
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 difficiles à faire.
Voyez la différence entre
px
,dp
etsp
sur différentes tailles d'écran.Source: Programmation Android: The Big Nerd Ranch Guide
la source
J'ai calculé la formule ci-dessous pour effectuer les conversions
dpi
versdp
etsp
la source
Définitions
px ou dot 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 noms d'alias à plusieurs densités
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.
sp ou sip est un pixel indépendant de l'échelle . Ils sont mis à l'échelle lorsque l' option Grand texte est activée dans Settings>Accessibility
Que faut-il utiliser?
la source
Source 1
Source 2
Source 3 : (les données de la source 3 sont données ci-dessous)
Remarque: Une dimension est une ressource simple qui est référencée à l'aide de la valeur fournie dans l'attribut name (pas le nom du fichier XML). En tant que tel, vous pouvez combiner des ressources de dimension avec d'autres ressources simples dans un seul fichier XML, sous un élément.
la source
Fondamentalement, le seul moment où le px s'applique est 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 arrondit à 0.
la source
px
Pixels - correspond aux pixels réels sur l'écran.
dp ou dip
Pixels indépendants de la densité - 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.
Utilisation de dp:
Indépendance de densité - Votre application atteint «l'indépendance de densité» lorsqu'elle préserve la taille physique (du point de vue de l'utilisateur) des éléments de l'interface utilisateur lorsqu'ils sont affichés sur des écrans de densités différentes. (c.-à-d.) L'image doit avoir la même taille (pas agrandie ou rétrécie) dans différents types d'écrans.
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.
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
la source
Où utiliser quoi et la relation entre px et dp?
Pixel indépendant de la densité (dp)
Unité de pixels virtuels que vous devez utiliser lors de la définition de la mise en page de l'interface utilisateur pour exprimer les dimensions ou la position de la mise en page de manière indépendante de la densité. Comme décrit ci-dessus, le pixel indépendant de la densité équivaut à un pixel physique sur un écran à 160 dpi, qui est la densité de base supposée par le système pour un écran à 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, 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 à 240 dpi, 1 dp équivaut à 1,5 pixels physiques. Vous devez toujours utiliser des unités dp lors de la définition de l'interface utilisateur de votre application, afin d'assurer un affichage correct de votre interface utilisateur sur des écrans de densités différentes.
Comprendre le pixel en dp et vice versa est très essentiel (en particulier pour donner des valeurs de dp exactes à l'équipe créative)
px
C'est expliqué ci-dessus. Essayez d'éviter dans les fichiers de mise en page. Mais il y a des cas où le px est requis. par exemple, ligne de séparation ListView. px est mieux ici pour donner une ligne d'un pixel comme séparateur 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 alors que la taille des polices de l'appareil changera (c'est-à-dire Affichage -> Polices sur l'appareil). Si vous souhaitez conserver une police de taille statique dans l'application, vous pouvez donner la dimension de la police en dp. Dans un tel cas, cela 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, sp est recommandé.
la source
Vous pouvez voir la différence entre
px
et àdp
partir de l'image ci-dessous, et vous pouvez également constater que lepx
etdp
ne peut pas garantir les mêmes tailles physiques sur les différents écrans.la source
Tout ce qui concerne la taille du texte et l'apparence doit utiliser
sp
oupt
. Alors que tout ce qui concerne la taille des contrôles, les dispositions, etc. doit être utilisé avecdp
.Vous pouvez utiliser à la fois
dp
etdip
à ses emplacements.la source
Je n'utiliserais que dp.
Il y a beaucoup de discussions sur l'utilisation de "sp" pour les tailles de police, et bien que j'apprécie le point, je ne pense pas que ce soit la bonne chose à faire du point de vue du design. Vous pouvez finir par casser votre conception si l'utilisateur a une sélection de taille de police bancale, et l'utilisateur finira par blâmer l'application , et non ses propres choix de vie.
De plus, si vous prenez une application sp-font sur une tablette à 160 dpi, vous constaterez que tout évolue ... mais votre police, qui va paraître minuscule en comparaison. Ce n'est pas beau.
Bien que l'idée des polices "sp" ait un bon cœur, c'est une mauvaise idée. Restez avec dp pour tout.
la source
sp
est un facteur, non? Tout ce qui affectedp
affectera égalementsp
. Cela dit, il est toujours préférable de spécifier des tailles de police en utilisantdp
plutôt quesp
si votre mise en page est très serrée et que les plus grandes tailles ne conviennent pas - il vaut mieux avoir un texte plus petit que ce que l'utilisateur veut qu'une mise en page complètement foirée. Mais dans le premier cas, vous devez toujours vous efforcer de respecter la préférence de taille de police de l'utilisateur - même le plus grand paramètre n'est pas si grand.sp = pixel indépendant de l'échelle
dp = dip = pixels indépendants de la densité
dpi = points par pouce
Android prend en charge différentes résolutions d'écran
Un périphérique ldpi 120 dp a 120 pixels dans une 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:
Ainsi, 1 dp de l'appareil à 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 n'importe quel appareil:
la source
La différence entre
dp
et lessp
unités mentionnées comme « préférence de taille de police de l'utilisateur » par les réponses copiées à partir de la documentation officielle peut être vue au moment de l'exécution en changeantSettings->Accessibility->Large Text
option.Large Text
L'option force le texte à1.3
s'agrandir.Bien sûr, cela peut dépendre du fournisseur, car cela réside dans les packages / applications / paramètres .
la source
dpi -
px - pixel
pt - points
pouces - par rapport à la taille d'écran physique (1 pouce = 2,54 cm).
mm- millimètre - par rapport à la taille d'écran physique.
sp - pixel indépendant de l'échelle.
dip -
En standard, dp et sp sont utilisés. sp pour la taille de la police et dp pour tout le reste.
Formule de conversion des unités:
la source
Voici la formule utilisée par Android:
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_ *".
Pris d' ici .
Cela éliminera une grande partie de la confusion lors de la traduction entre px et dp, si vous connaissez votre dpi d'écran.
Donc, disons que vous voulez une image de 60 dp pour un écran hdpi, alors la taille de pixel physique de 60 dp est:
la source
Taille de l' écran en
Android
sont regroupées en catégoriessmall
,medium
,large
,extra large
,double-extra
ettriple-extra
. La densité d'écran est la quantité de pixels dans une zone (comme le pouce) de l'écran. Il est généralement mesuré en points par pouce (dpi). La densité de l'écran est regroupée en faible, moyenne, élevée et extra haute. La résolution est le nombre total de pixels sur l'écran.Formule de conversion entre les unités
dp à px dans l'appareil
L'exemple suivant peut aider à mieux comprendre. La mise à l'échelle se produit en fonction de la taille du compartiment de 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) et 640 (xxxhdpi). Le rapport suggéré par Google pour la conception est de 3: 4: 6: 8: 12 pour ldpi: mdpi: hdpi: xhdpi: xxhdpi
Une image 150px X 150px occupera,
Vous pouvez utiliser la calculatrice DPI suivante pour fixer vos tailles d'image et autres dimensions lorsque vous souhaitez avoir une conception d'interface utilisateur uniforme sur tous les appareils Android.
Calculatrice DPI en Java
Plus d'informations se réfèrent au lien suivant.
http://javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/
la source
Veuillez lire la réponse du wiki de la communauté. Vous trouverez ci-dessous quelques informations à prendre en considération en plus des réponses ci-dessus. La plupart des développeurs Android manquent cela lors du développement d'applications, donc j'ajoute ces points.
sp = pixel indépendant de l'échelle
dp = pixels indépendants de la densité
dpi = densité de pixels
J'ai parcouru les réponses ci-dessus ... ne les trouvant pas exactement correctes. sp pour la taille du texte, dp pour les limites de mise en page - standard. Mais sp pour la taille du texte rompra la mise en page s'il est utilisé avec négligence dans la plupart des appareils.
sp prend la taille du texte de l'appareil, tandis que dp prend celle du standard de densité de l'appareil (ne change jamais dans un appareil) Disons que le texte 100sp peut occuper 80% de l'écran ou 100% de l'écran selon la taille de police définie dans l'appareil
Vous pouvez également utiliser sp pour les limites de 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 tenant compte de l'UX.
Certaines personnes utilisent une énorme taille de POLICE 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 lorsque l'utilisateur modifie ses paramètres.
De même, si vous avez une seule application prenant en charge toutes les dimensions, l'ajout d'actifs xxxhdpi augmente considérablement la taille de l'application. Mais maintenant, les téléphones xxxhdpi sont courants, nous devons donc inclure au moins les actifs 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.
Notez également que les gens utilisent une police personnalisée dans leur téléphone. L'absence de police peut donc causer des problèmes d'espacement et tout. Supposons que la taille du texte 12sp pour une police personnalisée peut prendre quelques pixels de plus que la police par défaut.
Reportez-vous au site de développeur Google pour obtenir des détails sur les captures d'écran et la densité basée sur Android. https://developer.android.com/training/multiscreen/screendensities
la source
Normalement, sp est utilisé pour les tailles de police, tandis que dip est utilisé (également appelé dp) pour les autres.
la source
Je suis tombé sur un bon article sur la conception d'interface utilisateur d'applications Android pour différentes résolutions d'écran, et je voudrais le laisser ici juste pour quelqu'un qui recherche dans ce domaine. Oui, je sais que c'est en quelque sorte décrit dans Google docs (et mentionné dans les articles ci-dessus), je l'ai lu mais ce n'était pas bon pour moi (ouais, je peux être trop stupide)). Je ne savais pas comment concevoir des mises en page capables de gérer différentes tailles d'écran. Je déteste le concept DP et ainsi de suite, lorsque j'ai besoin d'implémenter une disposition d'interface utilisateur "flexible" pour différents écrans. (Hé les développeurs iOS - oui, vous avez raison, c'est le concept Storyboard).
Android n'a pas un mauvais concept d'interface utilisateur, mais il manque malheureusement les fonctionnalités de Storyboard iOS. Concevoir une interface utilisateur flexible dans Android n'est pas chose facile (au mieux).
Voici l'article qui m'a aidé à comprendre ce qu'il faut faire dans Android pour créer des dispositions pour différentes tailles d'écran:
Blog JMSTUDIO: - Décidez de la taille de l'écran de l'application Android
AJOUTÉ : Si vous êtes également intéressé par l'interface utilisateur "flexible", jetez un œil à cette bibliothèque: Un SDK Android qui fournit une nouvelle unité de taille - sdp (dp évolutif). Cette unité de taille évolue avec la taille de l'écran (cela est également mentionné dans une réponse ici, à propos de la
SDP
bibliothèque)ADDED2 Google a enfin compris l'utilité du concept d'interface utilisateur iOS Storeboard, et c'est parti
ConstraintLayout
pour le monde Android: créer une interface utilisateur réactive avec ConstraintLayoutla source
1)
dp: (density independent pixels)
Le nombre de pixels représentés dans une unité de dp augmentera à mesure que la résolution d'écran augmente (lorsque vous avez plus de points / pixels par pouce). Inversement sur les appareils avec une résolution inférieure, le nombre de pixels représentés dans l'unité de dp diminuera. Comme il s'agit d'une unité relative, elle doit avoir une base de référence à comparer. Cette ligne de base est un écran de 160 dpi. Voici l'équation:
px = dp * (dpi / 160).
2)
sp: (scale independent pixels)
Cette unité est mise à l'échelle en fonction du dpi de l'écran (similaire au dp) ainsi que de la préférence de taille de police de l'utilisateur.
3)
px: (pixels)
Pixels ou points réels sur l'écran.
Pour plus de détails, vous pouvez visiter
la source
Taille de l' écran dans Android sont regroupées en catégories
ldpi
,mdpi
,hdpi
,xhdpi
,xxhdpi
etxxxhdpi
. La densité d'écran est la quantité de pixels dans une zone (comme le pouce) de l'écran. Elle est généralement mesurée en points par pouce (dpi
).PX(Pixels):
px
est destiné aux pixels absolus. Ceci est utilisé si vous souhaitez donner en termes de pixels absolus pour la largeur ou la hauteur. Non recommandé.DP/DIP(Density pixels / Density independent pixels):
dip == dp
. Dans les versions antérieures d'Android, dip était utilisé et remplacé par la suitedp
. C'est une alternative àpx
.En règle générale, nous n'utilisons jamais
px
car c'est une valeur absolue. Si vous utilisezpx
pour définir la largeur ou la hauteur, et si cette application est téléchargée sur différents appareils de taille d'écran, cette vue ne s'étirera pas selon la taille d'origine de l'écran.dp
est fortement recommandé d'utiliser à la place depx
. À utiliserdp
si vous souhaitez mentionner la largeur et la hauteur pour agrandir et réduire dynamiquement en fonction des tailles d'écran.si nous donnons
dp/dip
, android calculera automatiquement la taille des pixels sur la base d'un écran de 160 pixels.SP(Scale independent pixels):
mis à l'échelle en fonction de la préférence de taille de police de l'utilisateur. Les polices doivent utiliser
sp
.en mentionnant les tailles de police adaptées à différentes tailles d'écran, utilisez
sp
. Ceci est similaire àdp
.Utilisez ensp
particulier pour que les tailles de police augmentent et diminuent dynamiquement en fonction des tailles d'écranLa documentation Android indique:
la source
L'écran d'un téléphone mobile est composé de milliers de minuscules 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é est élevé, plus il devient net et rend l'écran du smartphone plus lisible.
La résolution d'écran est mesurée en termes de nombre de pixels sur 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 la réflexion sur les écrans en termes de pixels ignore la notion de taille physique, qui pour un appareil tactile est vraiment très importante.
Le pixel indépendant de la densité (dp ou dip) permet au concepteur de créer des ressources qui apparaissent de la manière attendue, quelle que soit 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 des points par pouce
Donc, à 320 dpi, 1 dp est égal à 2 px.
Formule
px / dp = dpi / 160 dpi
Les points par pouce (dpi) sont une mesure de la netteté (c'est-à-dire la densité des points éclairés) sur un écran d'affichage. Les points par pouce pour une résolution d'image donnée différeront en fonction de la taille globale de l'écran, car le même nombre de pixels sont répartis sur un espace différent.
Travailler avec des pixels indépendants de la densité nous aide à faire face à une situation comme celle où vous avez deux appareils avec la même résolution en pixels, mais un espace différent. Supposons que dans un cas, une tablette et un téléphone aient la même résolution en pixels 1280 x 800 pixels (160 dpi) et 800 x 1280 pixels (320 dpi) respectivement.
Maintenant, comme une tablette est à la densité de base (160 dpi), ses tailles de pixels physiques et indépendantes de la densité sont les mêmes, 1280 par 800. Le téléphone, d'autre part, a une densité de pixels plus élevée, il a donc la moitié autant de pixels indépendants de la densité que physique pixels. Donc, un téléphone a 400 x 640 pixels indépendants de la densité. Ainsi, l'utilisation d'un pixel indépendant de la densité permet de visualiser mentalement plus facilement 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 est 800 par 1280 pixels (320 dpi), et l'autre est 400 par 640 pixels (160 dpi), nous n'avons pas besoin de définir totalement différentes dispositions pour ces deux appareils, car nous pouvons mesurer les actifs en termes de pixels indépendants de la densité, ce qui est le même pour les deux appareils.
800 x 1280 pixels (320 dpi) = 400 x 640 pixels indépendants de la densité (dp)
400 x 640 pixels (160 dpi) = 400 x 640 pixels indépendants de la densité (dp)
Mettre à l'échelle les pixels indépendants (sp) est l'unité préférée pour la taille de la police. À des fins d'accessibilité, Android permet aux utilisateurs de personnaliser la taille de police de leur appareil. Les utilisateurs qui ont du mal à lire du texte peuvent augmenter la taille de police de leur appareil. Vous pouvez normalement trouver cette option dans les paramètres d'affichage de votre téléphone ou 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 sp est exactement identique à 16 dp lorsque la taille de police de l'appareil est normale ou 100%. Mais lorsque la taille de police de l'appareil est grande, par exemple 125%, 16 sp se traduira par 20 dp ou 1,25 fois 16.
Si vous utilisez dp comme unité de taille de police, ce morceau de texte a une taille physique spécifique, peu importe si l'utilisateur a personnalisé la taille de police du périphérique. L'utilisation d'unités SP améliorera l'expérience des personnes malvoyantes.
Référence : Udacity , Google
la source
Vous devez l'utiliser avec des textes car il est automatiquement mis à l'échelle en fonction de la taille de police utilisée par l'utilisateur dans son appareil.
la source
Densité de pixels
La densité et la résolution des pixels de l'écran varient selon la plate-forme. Les pixels indépendants de l'appareil et les pixels évolutifs sont des unités qui offrent un moyen flexible de s'adapter à une conception sur toutes les plateformes.
Calcul de la densité de pixels
Le nombre de pixels qui s'inscrivent dans un pouce est appelé densité de pixels. Les écrans haute densité ont plus de pixels par pouce que les écrans basse densité ....
Le nombre de pixels qui s'inscrivent dans un pouce est appelé densité de pixels. Les écrans haute densité ont plus de pixels par pouce que ceux à faible densité. Par conséquent, les éléments d'interface utilisateur des mêmes dimensions de pixels apparaissent plus grands sur les écrans à faible densité et plus petits sur les écrans à haute densité.
Pour calculer la densité d'écran, vous pouvez utiliser cette équation:
Densité de l'écran = largeur (ou hauteur) de l'écran en pixels / largeur (ou hauteur) de l'écran en pouces
Indépendance de densité
La densité et la résolution des pixels de l'écran varient selon la plate-forme. Les pixels indépendants de l'appareil et les pixels évolutifs sont des unités qui offrent un moyen flexible de s'adapter à une conception sur toutes les plateformes.
Calcul de la densité de pixels Le nombre de pixels pouvant tenir dans un pouce est appelé densité de pixels . Les écrans haute densité ont plus de pixels par pouce que les écrans basse densité ....
L'indépendance de densité se réfère à l'affichage uniforme des éléments d'interface utilisateur sur des écrans de densités différentes.
Les pixels indépendants de la densité , écrits en dp (prononcés « creux »), sont des unités flexibles qui évoluent pour avoir des dimensions uniformes sur n'importe quel écran. Les interfaces utilisateur matérielles utilisent des pixels indépendants de la densité pour afficher les éléments de manière cohérente sur des écrans de densités différentes.
Lire le texte intégral https://material.io/design/layout/pixel-density.html
la source
Pixels (px) - correspond aux pixels réels sur l'écran. Ceci est utilisé si vous souhaitez donner en termes de pixels absolus pour la largeur ou la hauteur.
Pixels indépendants de la densité (dp ou dip) - 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 changera 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" soit plus cohérent avec "sp".
Pixels indépendants de l'échelle (sp) - 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 cet appareil lors de la spécification des tailles de police, afin qu'elles soient ajustées à la fois pour la densité de l'écran et les préférences de l'utilisateur.
Utilisez toujours dp et sp uniquement. sp pour les tailles de police et dp pour tout le reste. Il rendra l'interface utilisateur compatible pour les appareils Android avec des densités différentes. Vous pouvez en savoir plus sur le pixel et le dp sur https://www.google.com/design/spec/layout/units-measurements.html#units-measurements-density-independent-pixels-dp-
URL de la source: - http://www.androidtutorialshub.com/what-is-the-difference-between-px-dp-dip-sp-on-android/
la source
Je veux fournir un moyen simple de comprendre
dp
. En fait, je pense quedp
c'est le plus facile à comprendre.dp
est juste une unité de longueur physique. C'est de la même dimension quemm
ouinch
. C'est juste pratique pour nous d'écrire50dp
,60dp
plutôt que50/160 inch
ou60/160 inch
, car ondp
est juste1/160 inch
quelle que soit la taille d'écran ou la résolution.Le seul problème est que les ppp android de certains écrans ne sont pas précis. Par exemple, un écran classé à 160 dpi peut avoir 170 dpi en effet. Le résultat du calcul
dp
est donc flou. Il devrait être approximativement le même que1/160 inch
.la source