web-dev-qa-db-fra.com

À propos de Android taille de l'image et des ressources

Je dois clarifier certains doutes sur les ressources d'image de mon application,

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

quel type d'écran dois-je choisir dans le dossier des ressources?

drawable, hdpi, ldpi, mdpi, xhdpi,

avoir l'image de hauteur de 50 px,

et quel est le pourcentage d'images plus grandes et plus petites par rapport à l'image de base,

comme dans iOS, @ 2x, correspond littéralement à 2 fois la taille de l'image, et vous dites par programme la taille normale,

merci!

86
manuelBetancurt

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:

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

Bien que vous n’ayez pas vraiment besoin de 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 simplement d’utiliser des ressources hdpi.

Cela signifie que si vous créez une image 48dip et prévoyez de prendre en charge jusqu'à xxhdpi resolution, vous devriez commencer par une image de 144 pixels (192 pixels 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 doivent s'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 celles-ci sont:

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

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 respectifs Android drawable- * - !

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 "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; 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 Android Studio Project:

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

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

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

22
Ben Marten

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

L'icône du lanceur de tablettes Android utilise un niveau de densité supérieur.

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

Le superbe écran du Nexus 10 tombe dans le panier de densité XHDPI. Sur les tablettes, Launcher utilise des icônes d'un niveau de densité supérieur [0] pour les rendre légèrement plus grandes. Pour vous assurer que votre icône de lanceur (l'actif le plus important de vos applications) est nette, vous devez ajouter une icône de 144 * 144 pixels dans le dossier drawable-xxhdpi ou drawable-480dpi.

Trouver la source ici

4
geng

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 de 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 à très haute densité) - 144px x 144px (0,75) (4)

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

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

1
Vishal Kumar Sahu