80

Ich brauche einige Zweifel über das Bild-Assets für meine Anwendung zu klären,über Android Bild und Asset Größen

, wenn ich in einer XML-Datei, die die Höhe von etwas [Bildansicht] 50 dip Höhe

angeben

Welche Art von Bildschirm sollte ich aus dem Ordner Ressourcen auswählen?

drawable, hdpi, ldpi, mdpi, xhdpi, 

das 50 px Höhenbild haben,

und was ist der Prozentsatz für größere, kleinere Größe Bilder im Vergleich zum Basisbild,

wie in iOS, @ 2x, buchstäblich 2 mal die Größe des Bildes, und Sie sagen programmatisch die normale Größe,

danke!

+1

Ihre Frage wird im Android-Handbuch erklärt: http://developer.android.com/guide/practices/screens_support.html –

Antwort

349

mdpi ist die Referenzdichte - das heißt, 1 px auf einem mdpi Display entspricht 1 Dip. Das Verhältnis für das Asset-Skalierung ist:

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

Obwohl Sie nicht wirklich brauchen, sich Sorgen zu machen über tvdpi es sei denn, Sie speziell für Google TV oder dem ursprünglichen Nexus 7 zu entwickeln - aber auch Google hdpi Vermögenswerte empfiehlt einfach verwenden.

Das bedeutet, wenn Sie ein 48dip-Image erstellen und bis zu xxhdpi resolution unterstützen möchten, sollten Sie mit einem 144px-Bild beginnen (192px, wenn Sie native Assets für xxxhdpi wünschen) und die folgenden Bilder für die Dichten erstellen:

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 in etwa die gleiche Größe angezeigt werden, vorausgesetzt, Sie haben diese in der Dichte spezifische Ordner abgelegt (zB drawable-xhdpi, drawable-hdpi, etc.)

Als Referenz der Pixeldichten für diese sind:

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

Dies ist die einfachste Erklärung dieses Themas, die ich online überall gesehen habe. Ich habe es buchstäblich auf meinem Designer-Arbeitsplatz markiert lol –

+10

Haha, großartig! : P Gerade auch Infos für XXHDPI hinzugefügt. – kcoppock

+0

Wie entscheiden Sie, dass Sie von einem 48-Dip starten müssen? Angenommen, Sie haben nur ein Tablett (mdpi) zur Hand, beginnen Sie mit einer zufälligen Größe und iterieren Sie, bis es "groß genug" aussieht. – phtrivier

4

kcoppock hat die Andorid-Bildschirmdichten hervorragend erklärt. Ich möchte nur einen weiteren Punkt in Bezug auf die ursprüngliche Frage hinzufügen.

Android Tablet Launcher-Symbol verwendet eine Dichte Eimer oben.

Laut Google-Entwickler Nick Fleischer Google+ posten

Der wunderschöne Bildschirm auf dem Nexus 10 fällt in die XHDPI Dichte Eimer. Auf Tablets verwendet Launcher Symbole aus einem Dichte-Bucket [0], um sie etwas größer darzustellen. Um sicherzustellen, dass Ihr Launcher-Symbol (wahrscheinlich das wichtigste Asset Ihrer Apps) scharf ist, müssen Sie ein 144 * 144-Pixel-Symbol im Ordner "Drawable-xxhdpi" oder "Drawable-480dpi" hinzufügen.

Suche Quelle here

22

Basierend auf kcoppock ‚s Antwort, die ich das folgende Shell-Skript erstellt haben, um automatisch alle Bilder auf die richtige Größe zu skalieren und kopieren Sie sie in den jeweiligen Android drawable- * - Ordner!

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/* 

Setzen Sie Ihr Skript in einem Ordner und Ihre Originalbilder in einem Unterordner zB:

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

Führen Sie das Shell-Skript im Terminal aus: sh createAndroidImages.sh

Um die erstellten Bilder direkt auf Ihrem Android-Studio-Projekt zu kopieren:

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

Sie sind fertig! Hoffe das hilft jemandem!

P.S. Bitte beachten Sie, dass die Originalbilder für optimale Ergebnisse mindestens das Vierfache der Breite in Pixeln als die gewünschte Breite in dpi (z. B. 4 (Faktor xxxhdpi) * 30dpi => 120px) haben sollten.

1

Hier ist meine Berechnungen für Upscaling und Verkleinerung von Bildern für Android-

LDPI (120 dpi, mit geringer Dichte Bildschirm) - 36px x 36px (0,19) (1)

MDPI (160 dpi, mittlere Dichte Bildschirm) - 48px x 48px (0,25) (1,33)

hdpi (240 dpi, mit hohen Dichte Bildschirm) - 72px x 72px (0,38) (2)

xhdpi (320 dpi, extrahoher Dichte Bildschirm) - 96px x 96px (0,5) (2,67)

xxhdpi (480 dpi, Extra-extra-hochdichten Bildschirm) - 144px x 144px (0,75) (4)

xxxhdpi (640 dpi, Extra-extra-extra-hohe Dichte Bildschirm) - 192px x 192px (1,0) (5,33)

My short article hilfreich Bild Ressourcen erstellen ImageMagick, wenn Es gibt mehrere Bilder.

Verwandte Themen