Android Minimum Bouton Hauteur: 48dp = 9mm?
Je suis actuellement en train de travailler sur des maquettes d'une application mobile et il y a quelque chose qui semble glisser mon esprit: Dans le Android Les Lignes Directrices De Conception, ils déclarent ce qui suit:
En moyenne, 48dp traduire pour une taille physique d'environ 9mm (avec quelques
la variabilité).
Mais, selon le Android Développeurs Dev Guide, ils calculent un dp
à l'aide de la formule suivante:
L'indépendante de la densité de pixel est l'équivalent d'un pixel sur un
160 dpi de l'écran, qui est la base de la densité assumée par le système
pour un "moyen" de la densité de l'écran. Au moment de l'exécution, le système de façon transparente
poignées de mise à l'échelle de la dp unités, en tant que de besoin, sur la base de l'
la densité de l'écran en cours d'utilisation. La conversion de dp unités à l'écran
pixels est simple: px = dp * (dpi /160). Par exemple, sur un 240 dpi
écran, 1 dp, soit 1,5 physique pixels. Vous devriez toujours utiliser dp
les unités lors de la définition de l'INTERFACE utilisateur de votre application, afin d'assurer le bon affichage de
votre INTERFACE utilisateur sur des écrans avec des densités différentes.
Donc disons que pour des raisons de simplicité, je suis en train de faire ma conception 160dpi donc mes graphiques ont la bonne taille selon les normes recommandées. Lors de l'impression, je l'échelle vers le bas de mon document par 2,22 (160dpi/72dpi) de sorte que le résultat imprimé donne la dimension physique sur le papier.
Je veux que mes boutons 48dp élevé. Mais si je fais le calcul, à la suite de tout ce que j'ai lu, je ne vais nulle part près d'un 9mm taille en spécifiant 48 comme mon bouton de hauteur.
48dp /160dpi = 0,3 cm, afin de 7,62 mm...
Ce que je suis clairement manquant/fais de mal? Où est cette 9mm en venir?
Merci!
Mise à jour
Voici ce qui m'a aidé à comprendre ce que j'ai été absent de la accepté de répondre.
Prendre comme un exemple de la densité de l'écran de 200. Android utilisera 240 pour base de ses calculs. Donc:
- 240dpi /160dpi = 1,5 échelle
- 48dp * 1,5 d'échelle = 78 physique pixels
- 78 px /240dpi = 0,3 pouces (ce qui est exactement le même que 48dp /160dpi)
Maintenant, le truc, c'est que le réel de l'appareil densité était de 200. De sorte que les pixels apparaissent plus grande que sur un 240dpi écran. Pour obtenir la taille physique sur la résolution de 200 ppp appareil, nous devons faire la différence entre la résolution et de l'appliquer à l'0,3 pouces:
- 240dpi /200 ppp = 1,2
- 0,3 * 1,2 de différence = 0,36 dans qui donne 9,144 mm
Je sais que c'est exactement le même comme l'a indiqué @kabuko:
(48dp /200ppi) * 1.5 * 25,4 mm/in = 9.14400
mais l'étape par étape m'a aidé à comprendre ce qui se passe sous le capot.
OriginalL'auteur David Côté | 2012-04-11
Vous devez vous connecter pour publier un commentaire.
L'énoncé exact vous faites référence est:
Si vous regardez cette image de la Prise en charge de Plusieurs Écrans doc:
Vous verrez qu'il y a de la densité des seaux (ldpi, mdpi, hdpi, xhdpi). Chacun de ces ne sont pas fixes densités, mais plutôt un éventail de densités qui finissent de cartographie pour les numéros fixes utilisés pour diverses densité de calculs (120, 160, 240, 320, respectivement). 160 est rarement la taille réelle des pixels par pouce pour une mdpi appareil, c'est juste l'abstraction de la valeur utilisée pour des raisons de simplicité.
Vos calculs sont corrects, mais vous supposez que 160ppi est la densité moyenne (en supposant que mdpi périphériques) tout simplement parce que 160dpi est l'abstraction de la valeur pour mdpi. Apparemment, il ne l'est pas, si l'instruction de la référence est bien vrai. Je soupçonne qu'il y a beaucoup de dispositifs qui en moyenne près de 200ppi qui finissent classés comme hdpi. Cela pourrait être: (48dp /200ppi) * 1.5 * 25,4 mm/in = 9.14400 mm. Juste une supposition, mais certainement je pense que la raison sous-jacente est que le moyen n'est pas 160ppi.
Mise à jour:
Voici une autre citation de la doc, de la conception du site:
De sorte que la taille varie de > 7mm d'au moins 9 mm (compte tenu de 9mm est censé être de la moyenne, je pense que le haut de gamme devrait être < 11mm). Oui, 48dp doit être "à peu près" la même taille sur tous les écrans, mais ce "environ" signifie vraiment, c'est pas vraiment précisé. Votre 7,62 mm est au sein de la gamme. Leur 9mm valeur, c'est juste pour la "moyenne" qui est un non spécifié ppi.
Désolé, les nouvelles avec l'éditeur... Dans la documentation de la même page, vous avez fait allusion, ils affirment qu'un "dp" est 1 physique de pixel sur un 160dpi écran. Donc, si une "dp" est en fait sur une base de 160dpi, il n'y a aucune hypothèse sur la densité de pixels utilisés pour les calculs. 48dp, quelle que soit la résolution de l'écran, il faut toujours traduire à peu près dans la même taille physique, le système d'exploitation mise à l'échelle à la fin résultat en fonction de la px = dp * (dpi/160) de la formule. Dans votre exemple, vous prenez 48/200 * 1.5, mais il serait, à ma connaissance, de 1,25. Retour à la case départ... 🙁 Mais encore une fois, je sais que je dois être mauvais!
J'ai mis à jour la description pour donner plus de précision qui pourrait donner des indices sur le pourquoi je suis confus. Merci encore pour votre aide!
Ahh, ok. C'est le malentendu. La chose est, il y a une abstraction de la densité (ldpi/mdpi/hdpi/xdpi : 120 ppp/160dpi/240dpi/320dpi) qui est ce qu'Android utilise pour faire ces calculs et puis il y a la physique réelle de la densité (pixels par pouce). Si vous prenez un 200ppi appareil il pourrait être placées dans un compartiment en hdpi, qui est 240dpi. Donc, même si l'appareil est vraiment 200ppi, Android va utiliser 240dpi pour l'ensemble de ses calculs.
Assez proche. 48dp donnera environ 0,3, mais parce que Android fait jamais utilise de la densité réelle mais seulement la généralisation de la densité, vous ne savez pas vraiment exactement ce qu'taille, elle est sur un périphérique réel, seulement que c'est assez proche.
OriginalL'auteur kabuko
Si parlant strictement sur les Tablettes et téléphones Android (pas de TÉLÉVISION, pas d'Usure, pas de bureau, pas d'iOS):
Selon google, la liste des appareils https://design.google.com/devices/ la 48dp à 9 mm de recommandation n'a pas vraiment correspondre les valeurs du monde réel, il semble.
Je devais trouver le plus bas de la valeur de DP pour l'utiliser en toute sécurité un rendu à ou au-dessus d'une taille physique de partout. S'avère que certains appareils sont juste mal configuré (Sony Experia C4 étant le pire dans cette liste à 200 dp/dans, la prochaine est la Dell Venue 8 à 180dp/, puis LG G3 à 178dp/dans) (ici à parler de logique DP pas de physique DPI). Dans ces dispositifs, tout sera plus petit que la moyenne. Tout le reste est près de 170..144 dp/.
Si cette info peut être trouvé ailleurs d'accord les données et les ont aussi de plus en plus d'appareils qu'il serait bien dans ce cas nous voir il y a plus de voyous appareils.
Voici quelques chiffres que j'ai extrait de la page: (uniquement les tablettes et téléphones android)
Avec ces chiffres, voici un tableau pour le min/max mm taille pour diverses discret dp valeurs à choisir (arrondi à 1/10 mm):
Formule
mm = <dp> * 25.4 /<dp/in>
où
<dp/in>
est le max dense dp/(200) ou de faible dense (141) j'ai pu trouver sur cette liste d'appareils.Exemple
48dp * 25.4 /200 = 6.096mm
arrondis: 6.1 mm -- ce qui est en dessous de la "sécurité" de 7mm leur demandez.
Également noter que 48dp jamais tout à fait atteint "9mm" sur n'importe quel téléphone/tablette écrans. Max étant de 8,6 (qui est proche, mais certainement pas une moyenne).
OriginalL'auteur Bernard