web-dev-qa-db-fra.com

Comment préparer des images pour toutes les résolutions Android?

Dans iOS, la préparation des graphiques est simple. Il existe soit une image normale (hauteur x largeur) ou une image rétine qui est @ 2x (2 fois hauteur x 2 fois largeur).

Cependant, depuis que je suis nouveau sur Android, je vois une tonne de dossiers drawable- * dans Eclipse où le * peut être "hdpi" ou "ldpi" ou "mdpi" ou "xhdpi" ou "xxhdpi". Quelqu'un peut-il m'indiquer très clairement et simplement ce que je dois faire pour satisfaire chacune des possibilités d'affichage afin que mes images soient correctes dans chaque cas? J'imagine qu'une réponse sera une liste à puces avec chaque "*" répertorié et une liste de sous-puces comprenant les choses qui doivent être faites.

J'apprécierais aussi vraiment une réponse qui commencerait par la plus haute densité et la plus grande image de dimension et qui descendrait car je créerai dans Photoshop et réduirai la qualité d'une image principale. Merci d'avance!

27
Art Geigel

je l'ai retiré de ce site il y a quelque temps, il est toujours utile

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp
Generalised Dpi values for screens:

ldpi Resources for low-density (ldpi) screens (~120dpi)
mdpi Resources for medium-density (mdpi) screens (~160dpi). (This is the baseline density.)
hdpi Resources for high-density (hdpi) screens (~240dpi).
xhdpi Resources for extra high-density (xhdpi) screens (~320dpi).
Therefore generalised size of your resources (assuming they are full screen):

ldpi
Vertical = 426 * 120 / 160 = 319.5px
Horizontal = 320 * 120 / 160 = 240px
mdpi
Vertical = 470 * 160 / 160 = 470px
Horizontal = 320 * 160 / 160 = 320px
hdpi
Vertical = 640 * 240 / 160 = 960px
Horizontal = 480 * 240 / 160 = 720px
xhdpi
Vertical = 960 * 320 / 160 = 1920px
Horizontal = 720 * 320 / 160 = 1440px

px = dp*dpi/160
30
JRowan

Dans Android Studio, accédez simplement à File -> New -> Image Asset et créez vos images directement à partir de l'IDE.

9
BigPun86

Sur Android nous gérons généralement les tailles d'image en unités de "dp" ou "dip" qui signifie pixel indépendant du périphérique. 1 dip = 1 pixel, sur un écran mdpi. Il y a beaucoup de périphériques sur là avec différentes densités d'écran, pas seulement normales et rétine, il y a donc plusieurs compartiments DPI dans lesquels l'écran d'un appareil peut tomber:

  • ldpi (faible dpi): environ 120 dpi
  • mdpi (dpi moyen): environ 160 dpi
  • hdpi (haute dpi): environ 240 dpi
  • xhdpi (xtra haute dpi): environ 320 dpi

Notez que ce sont des compartiments, donc un appareil avec un écran de 170 dpi comptera comme un appareil mdpi.

Disons que vous avez une image vectorielle dans PS et que vous devez créer une ressource d'image pour Android et vous souhaitez prendre en charge toutes ces densités d'écran. Disons que l'image doit être 100x100 vous pouvez créer une version 100x100 pixels pour mdpi, une version 150x150 pixels pour hdpi, 200x200 pour xhdpi et 75x75 pour ldpi. Vous pouvez penser à "mdpi - xhdpi" sur Android as "normal - rétine" sur iOS.

Quant à la grande taille d'image que vous pouvez utiliser, je ne peux vraiment pas le dire. Pour autant que je sache, il n'y a pas de limite stricte, mais l'appareil ne pourra évidemment pas charger une bitmap 20000x20000 en mémoire sans sous-échantillonnage en raison des limites de tas.

Il existe un outil en ligne pour cela Android Asset Studio Et il y a aussi Fichier | Nouveau | Jeu d'icônes Android dans Eclipse