À propos de l’image Android et de la taille des actifs

Je dois clarifier certains doutes sur les éléments d’image pour mon application,

si je spécifie dans un fichier XML que la hauteur de quelque chose [vue image] est de 50 hauteurs d’immersion

Quel type d’écran dois-je choisir dans le dossier des ressources?

drawable, hdpi, ldpi, mdpi, xhdpi, 

avoir l’image de hauteur 50 px,

et quel est le pourcentage pour des images plus grandes et de plus petite taille par rapport à l’image de base,

comme dans iOS, @ 2x, est littéralement 2 fois la taille de l’image, et vous dites par programmation la taille normale,

Merci!

mdpi est la densité de référence – c’est-à-dire que 1 px sur un affichage mdpi est égal à 1 dip. Le ratio pour la mise à l’échelle des actifs est le suivant:

 ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4 

Bien que vous ne deviez pas vraiment vous soucier de tvdpi moins que vous ne développiez spécifiquement pour Google TV ou le Nexus 7 original – mais même Google recommande d’utiliser simplement des ressources hdpi .

Cela signifie que si vous faites une image 48dip et que vous envisagez de prendre en xxhdpi resolution , vous devez commencer avec une image 144px (192px si vous voulez des ressources natives pour xxxhdpi) et créer les images suivantes pour les densités:

 ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 36 x 36 | 48 x 48 | 64 x 64 | 72 x 72 | 96 x 96 | 144 x 144 | 192 x 192 

Et ceux-ci devraient afficher à peu près la même taille sur tous les périphériques, à condition que vous les ayez placés dans des dossiers spécifiques à la densité (par exemple drawable-xhdpi , drawable-hdpi , etc.).

Pour référence, les densités de pixels pour ceux-ci sont:

 ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 120 | 160 | 213 | 240 | 320 | 480 | 640 

Sur la base de la réponse de kcoppock , j’ai créé le script shell suivant pour redimensionner automatiquement toutes les images à la taille correcte et les copier dans les dossiers Android tirables- * respectifs!

Créez un script shell et collez le code suivant:

createAndroidImages.sh

 #!/bin/bash read -p "Please enter the subfolder of the original images? " folder read -p "How many DP (width) should the image have? " dp for i in $(find $folder/. -type f -name "*[AZ]*"); do mv "$i" "$(echo $i | tr AZ az)"; done mkdir drawable-ldpi mkdir drawable-mdpi mkdir drawable-tvdpi mkdir drawable-hdpi mkdir drawable-xhdpi mkdir drawable-xxhdpi mkdir drawable-xxxhdpi cp $folder/* drawable-ldpi/ cp $folder/* drawable-mdpi/ cp $folder/* drawable-tvdpi/ cp $folder/* drawable-hdpi/ cp $folder/* drawable-xhdpi/ cp $folder/* drawable-xxhdpi/ cp $folder/* drawable-xxxhdpi/ sips -Z $(echo $dp*3/4 | bc) drawable-ldpi/* sips -Z $(echo $dp | bc) drawable-mdpi/* sips -Z $(echo $dp*4/3 | bc) drawable-tvdpi/* sips -Z $(echo $dp*3/2 | bc) drawable-hdpi/* sips -Z $(echo $dp*2 | bc) drawable-xhdpi/* sips -Z $(echo $dp*3 | bc) drawable-xxhdpi/* sips -Z $(echo $dp*4 | bc) drawable-xxxhdpi/* 

Placez votre script dans un dossier et vos images originales dans un sous-dossier, par exemple:

 / .. createAndroidImages.sh .. originalImages/ ....a123.png ....b456.png 

Exécutez le script shell dans le terminal: sh createAndroidImages.sh

Pour copier les images créées directement sur votre projet Android Studio:

 cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/ 

Vous avez terminé! J’espère que cela aide quelqu’un!

PS Veuillez noter que les images originales doivent avoir au moins quatre fois la largeur en pixels, par rapport à la largeur désirée en dpi (par exemple 4 (facteur xxxhdpi) * 30dpi => 120px) pour des résultats optimaux.

kcoppock a fait un excellent travail en expliquant les densités d’écran andorides. Je voudrais juste append un autre point concernant la question initiale.

L’icône de lancement de la tablette Android utilise un seau de densité.

Selon le post Google+ de Nick Butcher, développeur de Google

Le magnifique écran sur le Nexus 10 tombe dans le seau de densité XHDPI. Sur les tablettes, Launcher utilise des icons d’un compartiment de densité supérieur [0] pour les rendre légèrement plus grandes. Pour vous assurer que votre icône de lanceur (sans doute la ressource la plus importante de votre application) est nette, vous devez append une icône 144 * 144px dans le dossier drawable-xxhdpi ou drawable-480dpi.

Trouver la source ici

Voici mes calculs pour la mise à l’échelle et la réduction des images pour android-

ldpi (120 dpi, écran basse densité) – 36px x 36px (0.19) (1)

mdpi (160 dpi, écran à densité moyenne) – 48px x 48px (0.25) (1.33)

hdpi (240 dpi, écran haute densité) – 72px x 72px (0.38) (2)

xhdpi (320 dpi, écran à très haute densité) – 96px x 96px (0.5) (2.67)

xxhdpi (480 dpi, écran extra-très haute densité) – 144px x 144px (0.75) (4)

xxxhdpi (640 dpi, écran très extra-extra-haute densité) – 192px x 192px (1.0) (5.33)

Mon court article est utile pour créer des ressources d’image en utilisant imagemagick, lorsqu’il y a plusieurs images.