J'ai commencé à créer des graphiques pour mon application Android à l'aide d'Adobe Photoshop. Mais je ne peux pas continuer, car la résolution dans Photoshop est définie en pixels par pouce alors que, comme le dit la documentation officielle de Google, Android nécessitera des images définies en dpi. J'ai cherché sur le Web la conversion entre les deux mais je n'ai jamais trouvé de formule appropriée.
Je sais que la documentation Android décrit la relation comme px = dp*dpi/160
. Mais mon problème est que si je connais dpi, où puis-je obtenir la valeur de dp à utiliser dans ce calcul? Ou y a-t-il une hypothèse sur la valeur de dp? Je suis confus.
Dp sont des pixels indépendants de la densité et sont utilisés pour généraliser le nombre de pixels d'un écran. Ce sont des chiffres généralisés tirés de http://developer.Android.com/guide/practices/screens_support.html
Valeurs Dpi généralisées pour les écrans:
Par conséquent taille généralisée de vos ressources (en supposant qu'elles soient en plein écran):
Edit - ajout de xhdpi car ils sont de plus en plus populaires
Ces valeurs devraient convenir à la plupart des écrans xhdpi tels que les téléviseurs et le Nexus 4, y compris le Nexus 10 (en supposant qu'ils ne créent pas de nouvelle catégorie pour cela car il s'agit de 25k x 16k, je ne sais pas car je n'ai pas mains sur un encore).
/Modifier
Si vous utilisez ces tailles, vos images auront fière allure sur n'importe quel écran. Assurez-vous toutefois de définir les tailles dans le code dans dp, Android gérera seul la conversion décrite ci-dessus.
Je ne suis pas d'accord avec la réponse de Michael Allen car les résolutions résultantes pour ldpi, mdpi, hdpi et xdpi ne satisfont pas les ratios de mise à l'échelle 3: 4: 6: 8 pour les bitmaps alternatifs mentionnés dans les documents Google ici sous `` Alternative Drawables ''
http://developer.Android.com/guide/practices/screens_support.html#testing
Par conséquent, je suggère que vous preniez l'exemple de base qui a une taille minimale de
470 x 320 dp maintenant en utilisant la formule de la même documentation, nous calculons la résolution plein écran pour la taille de l'écran de base
px = dp * (dpi/160); pour la ligne de base px = dp * (160/160) = dp * 1 donc px = dp. Cela signifie la taille plein écran pour notre configuration de base. en pixels serait
470 X 320 px (mdpi)
maintenant, pour suivre les ratios de mise à l'échelle 3: 4: 6: 8 pour les tailles de tirables alternatives pour ldpi, hdpi et xhdpi, nous devons dériver les valeurs unitaires de mdpi. c'est à dire.
470/4 = 117,5
320/4 = 80
divisez par 4 car le rapport de mise à l'échelle pour mdpi est de 4, les rapports de mise à l'échelle pour ldpi, hdpi et xhdpi sont respectivement de 3,6 et 8. il suffit maintenant de multiplier les résultats unitaires 117,5 et 80 avec ces facteurs de mise à l'échelle
ldpi
117,5 * 3 = 352,5
80 * 3 = 240
mdpi
117,5 * 4 = 470
80 * 4 = 320
hdpi
117,5 * 6 = 705
80 * 6 = 480
xhdpi
117,5 * 8 = 940
80 * 8 = 640
Ces tailles sont maintenant dans des rapports de mise à l'échelle 3: 4: 6: 8 parfaits.
Oui, Dp (Densité indépendante pixels) est tout ce dont Photoshop se souciera. Il ne faut pas tenir compte de la densité des pixels. Cette image d'un nombre très élevé de pixels peut être placée sur un très petit bouton d'interface utilisateur haute définition pour tout ce qui l'intéresse. Ou vous pouvez avoir quelques pixels pour une affiche A0 de style rétro de Tetris. C'est parce qu'ils peuvent être mis à l'échelle. Peu de pixels sont mis à l'échelle pour la grande zone, et de nombreux pixels sont réduits pour la petite zone sur un écran.
Alors choisissez votre cible lien vers les tailles taille de l'écran et utilisez-la dans Photoshop. (Vérifiez également qui utilise quoi ... diagramme à secteurs des tailles utilisées )
Pour l'intuition, ce site m'a aidé lien vers la page du blog :
Au moment de l'exécution, la plate-forme gère de manière transparente toute mise à l'échelle des unités dp nécessaires, en fonction de la densité réelle de l'écran utilisé.
(la plate-forme effectue la mise à l'échelle - la gestion du rapport de densité est effectuée par Android; pas par vous) et cela est extrêmement pertinent pour l'interface utilisateur:
L'utilisation d'unités dp pour définir l'interface utilisateur de votre application est fortement recommandée, afin de garantir un affichage correct de votre interface utilisateur sur différents écrans.
Parce que vous voulez que les éléments de l'interface utilisateur apparaissent de la même manière sur tous les appareils, il effectuera une mise à l'échelle en fonction du nombre de pixels qu'il calcule dans cette formule. Et si le dp est mis à l'échelle de telle sorte qu'il devienne trop épargné ou trop dense, eh bien cela n'aura pas l'air bien.
Comme la résolution dans Photoshop est définie en pixels par pouce, comme le dit la documentation officielle de Google Android nécessitera des images définies en dpi.
La même chose sur tous les appareils, il effectuera donc une mise à l'échelle en fonction du nombre de pixels qu'il calcule dans cette formule.