2010-04-01 10 views
30

Ich erstelle einen Begrüßungsbildschirm, der angezeigt wird, während meine Android-Anwendung geladen wird. Ich möchte es in der richtigen Größe erstellen, damit Android es nicht automatisch nach oben oder unten skaliert, um auf den Bildschirm zu passen. (Es ist ein Bitmap-Bild, ein Foto von einem Ölgemälde, also kann ich es nicht einfach zu einem Neun-Flecken machen)Welche Auflösung sollten meine Android-Startbildschirme sein?

Aber es gibt mindestens drei wichtige Bildschirmgrößen, die mir wichtig sind: 320x480, 480x854 (Droid) und 480x800 (Nexus One).

Ich habe die Dokumentation auf supporting multiple screen sizes gelesen, aber ich sehe immer noch nicht, wie ich verschiedene Startbildschirme für Droid/Nexus One konfigurieren soll (sie sind beide "hdpi" Ressourcen soweit Android betroffen ist)), und ich weiß nicht genau, wie groß mein Splash Screen in jedem Fall sein sollte. (Wie groß ist die OS Titelleiste/Menü in Droid? N1?)

Welche Größe soll ich diese Bilder machen, und wie sage ich Android, um die richtige Größe auf einem bestimmten Bildschirm zu verwenden?

+0

Warum nicht ein Bild von 300x300 (oder so) erstellen und zentrieren? – zildjohn01

+0

Sie haben meine Gedanken gelesen. Ich würde gerne sehen, dass diese Frage beantwortet wird. – Felix

+0

Es ist ein Bitmap-Bild. Zentrieren macht es komisch. –

Antwort

32

Sie müssen sich keine Gedanken über die absolute Bildschirmgröße oder Statusleisten oder irgendetwas — machen, deshalb haben wir neun Bilder.

Was ich getan habe, war ein Bild, das für jede Auflösung gut aussah — im Wesentlichen ein Logo auf einem transparenten Hintergrund, mit etwas Text am unteren Rand.

Dann hackte ich ziemlich viel Platz an den oberen und seitlichen Kanten, machte einen Neun-Patch-Rand um das Bild, mit einem einzelnen Pixel in der Nähe der linken, rechten und oberen Kanten. Dadurch kann das Bild gleichmäßig an den Seiten und oben erweitert werden, um den Bildschirm zu füllen.


bearbeiten, unten in Reaktion auf Dan Kommentar:

Ja, ist es eine Möglichkeit, zu bestimmen, welche Grafik für welche explizit Bildschirmgrößen verwendet werden soll, aber es ist deprecated.

So wie es drawable-hdpi und -ldpi Ressource-Qualifikation, es ist auch möglich, drawable-HHHxWWW — die größere Pixelabmessung erste Kommen zu verwenden.

z.B. drawable-800x480 und

+0

In meinem Fall ist mein Bild kein Logo; es ist ein Bitmap-Porträt (es ist ein Foto von einem Ölgemälde). Das Umwandeln dieses Gemäldes in ein Neun-Patch-Bild ist keine Option. –

+0

Wenn es so ein Bild ist, würde ich es wahrscheinlich nicht dehnen. Also würde ich es für jede Dichte auf die gebräuchlichste Auflösung skalieren und erlauben, dass es einen transparenten (oder anderen) Rahmen hat, wo mehr Platz auf dem Bildschirm zur Verfügung steht. –

+0

Das Hinzufügen eines Rahmens sieht seltsam aus. Stattdessen möchte ich zwei Ressourcen definieren: eine für 480x800 und eine weitere für 480x854. Ist das möglich? –

6

Okay, zuerst: Sie können das Gerätemodell über android.os.Build finden und damit bestimmen, welches Bild angezeigt werden soll.

Zweitens würde ich persönlich nicht stören. Layouts sollten im Dip gemacht werden, da jeder Android-Bildschirm 320x480 dip ist, glaube ich, und Android hält Seitenverhältnis unter Geräten sehr gut durch diese in meiner Erfahrung. Ein 480x800 Splash-Set, um Eltern zu füllen, war sowohl auf N1 als auch auf dem Droiden ziemlich zuverlässig, soweit ich es gesehen habe.

+0

Sie müssen nicht auf "Build" schauen, um die Bildschirmauflösung oder -dichte herauszufinden. Die Seitenverhältnisse können auch sehr unterschiedlich zwischen Geräten variieren; Deshalb gibt es die Ressourcenattribute 'long' und' notlong'. Wie auch immer, nichts davon ist wichtig, da wir die 'drawable-xdpi'-Ordner und neun-Patch-Bilder haben :) –

+0

Ging zurück durch die Unterstützung mehrerer Bildschirme Dokument und Sie haben einen wirklich guten Punkt. 'long' und' notlong' waren Probleme, die ich komplett vermisste. Könnten Sie in den extremen Fällen einige Bildschirme Ihrer Neun-Patch-Lösung veröffentlichen, damit ich ein Gefühl dafür bekomme, wie sich diese Methode für Spritzer eignet, die Bilder sind? – jqpubliq

+1

Sie sagen "ziemlich zuverlässig", aber wenn Sie mit Bitmap-Bildern wie meinem (einem Foto eines Ölgemäldes) arbeiten, gibt es merkliche Verzerrungen bei 480x800 vs. 480x854. Ich möchte zwei Ressourcen definieren, eine für 480x800 und eine andere für 480x854. Ist das möglich? –

1

Eine andere Lösung, die ich implementiert habe, ist ein ImageView, das den Bildschirm füllt (Breite und Höhe beide "MATCH_PARENT") mit Maßstabstyp "centerCrop". Auf diese Weise wird das Bild nicht gedehnt, sondern an den Kanten abgeschnitten. Versuchen Sie, wichtige Inhalte (Logos und ähnliches) nicht in die Nähe der Ränder zu bringen. Wenn es ein Foto ist, hoffe ich, dass die Kanten "entbehrlich" sind und abgeschnitten werden können.

Verwandte Themen