web-dev-qa-db-de.com

Über Android Bild- und Objektgrößen

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!

86
manuelBetancurt

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
368
kcoppock

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.

22
Ben Marten

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

4
geng

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.

1