Ich muss einige Zweifel über die Bildressourcen für meine App klären,
wenn ich in einer XML-Datei spezifiziere, dass die Höhe von etwas [Bildansicht] 50 Eintauchhöhe ist
welchen Bildschirmtyp soll ich aus dem Ressourcenordner auswählen?
drawable, hdpi, ldpi, mdpi, xhdpi,
um das 50 px hohe Bild zu haben,
und was ist der Prozentsatz für größere, kleinere Bilder im Vergleich zum Basisbild,
wie in iOS ist @ 2x buchstäblich 2-mal so groß wie das Bild, und Sie sagen programmatisch die normale Größe,
vielen Dank!
mdpi
ist die Referenzdichte - dh 1 px auf einer mdpi
-Anzeige entspricht 1 Einfall. Das Verhältnis für die Skalierung von Assets ist:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4
Sie müssen sich zwar nicht wirklich um tvdpi
kümmern, es sei denn, Sie entwickeln speziell für Google TV oder das ursprüngliche Nexus 7 - aber auch Google empfiehlt, einfach hdpi
Assets zu verwenden.
Dies bedeutet, dass Sie, wenn Sie ein 48-DIP-Image erstellen und planen, bis zu xxhdpi resolution
Zu unterstützen, mit einem 144-Pixel-Image beginnen sollten (192-Pixel-Image, wenn Sie native Assets für xxxhdpi wünschen) und die folgenden Images für die Dichten erstellen sollten :
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
Und diese sollten auf jedem Gerät ungefähr gleich groß angezeigt werden, vorausgesetzt, Sie haben sie in dichtespezifischen Ordnern abgelegt (z. B. drawable-xhdpi
, drawable-hdpi
Usw.).
Als Referenz sind die Pixeldichten für diese:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
120 | 160 | 213 | 240 | 320 | 480 | 640
Basierend auf der Antwort von kcoppock habe ich das folgende Shell-Skript erstellt, um alle Bilder automatisch auf die richtige Größe zu bringen und in die entsprechenden Android drawable- * - Ordner zu kopieren!
Erstellen Sie ein Shell-Skript und fügen Sie den folgenden Code ein:
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/*
Legen Sie Ihr Skript in einen Ordner und Ihre Originalbilder in einen Unterordner, z.
/
.. createAndroidImages.sh
.. originalImages/
....a123.png
....b456.png
Führen Sie das Shell-Skript im Terminal aus: sh createAndroidImages.sh
So kopieren Sie die erstellten Bilder direkt in Ihr Android Studio-Projekt:
cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/
Sie sind fertig! Hoffe das hilft jemandem!
P.S. Bitte beachten Sie, dass die Originalbilder mindestens die vierfache Breite in Pixeln aufweisen sollten, als die gewünschte Breite in dpi (z. B. 4 (Faktor xxxhdpi) * 30dpi => 120px), um optimale Ergebnisse zu erzielen.
kcoppock hat großartige Arbeit geleistet, um die Bildschirmdichte der Andoriden zu erklären. Ich möchte nur noch einen Punkt in Bezug auf die ursprüngliche Frage hinzufügen.
Das Android Tablet-Startsymbol verwendet einen Density-Bucket nach oben.
Laut dem Google+ Post von Google-Entwickler Nick Butcher
Der großartige Bildschirm des Nexus 10 fällt in den XHDPI-Dichtebereich. Auf Tablets verwendet Launcher Symbole ab einem Density-Bucket [0], um sie etwas größer darzustellen. Um sicherzustellen, dass Ihr Launcher-Symbol (wahrscheinlich das wichtigste Element Ihrer Apps) klar ist, müssen Sie im Ordner drawable-xxhdpi oder drawable-480dpi ein 144 * 144px-Symbol hinzufügen.
Quelle finden hier
Hier sind meine Berechnungen zum Hoch- und Verkleinern von Bildern für Android-
ldpi (120 dpi, Bildschirm mit niedriger Dichte) - 36 x 36 Pixel (0,19) (1)
mPI (160 dpi, Bildschirm mittlerer Dichte) - 48 x 48 Pixel (0,25) (1,33)
hDPI (240 dpi, High Density-Bildschirm) - 72 x 72 Pixel (0,38) (2)
xhdpi (320 dpi, Bildschirm mit besonders hoher Dichte) - 96 x 96 Pixel (0,5) (2,67)
xxhdpi (480 dpi, Bildschirm mit besonders hoher Dichte) - 144 x 144 Pixel (0,75) (4)
xxxhdpi (640 dpi, Bildschirm mit besonders hoher Dichte) - 192 x 192 Pixel (1,0) (5,33)
Mein kurzer Artikel ist hilfreich, um mit imagemagick Bildressourcen zu erstellen, wenn mehrere Bilder vorhanden sind.