Real hintergrund-Bild-Größe bei android (mit dem status-bar)
Ich würde gerne eine high-detail-Bild als backrgound in meine app, und ich habe ein problem mit meinem designer, weil dieser 😀
Durch jetzt, wir haben drei Bildgrößen (eine pro Dichte), nach der die meisten gängigen Geräten' Bildschirm-Größe, wie wir Sie kennen:
- Gegners: 240 x 320 (e. HTC Tattoo)
- Mitte:320 x 480 (e. HTC Magic)
- hohe: 480 x 800 (e. Nexus One)
Das problem ist, dass, wenn ich ein Bild als hintergrund, wird es in der Größe angepasst, und ich kann sehen, aus mehreren horizontalen "ghost" - Linien auf.
Also beschlossen wir, um die Größe der Bilder mit "Höhe-minus-statusbar-Höhe" (nur im high-density, einfach nur als test), dass schließlich ein 480 + 752 px Bild (nach http://developer.android.com/guide/practices/ui_guidelines/icon_design.html , in der Statusleiste die Höhe 48px)
Aber es zeigt immer noch diese "ghost" - Linien, so dass wir denken, es wird wieder geändert...
Könnte mir jemand helfen? Ich will einfach nur einen normalen hintergrund, ohne Größenänderung, aber ich weiß nicht, die Dimensionen...
Danke 😀
InformationsquelleAutor Aitor Gómez | 2010-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie setzen Sie sich in einem ständigen Zustand von Schmerz. Die kann man einfach nicht " design against genauen Auflösungen; es gibt zu viel variation in Geräten für dass und so Sie gehen, um in das Gesicht schlug ständig, wie Sie immer wieder neue Geräte. Android hat eine Menge von Einrichtungen für den Umgang mit diesem Bildschirm Vielfalt, wie die 9-patches, Ihre Dichte-management, layout-Manager, etc. Wenn Sie die Vorteile dieser, werden Sie glücklich; wenn nicht, werden Sie fluchen die ganze Zeit.
Aber wenn Sie wollen, zu schwören, ich kann nicht aufhören, Sie. Nur bitte nicht nehmen, der net beschweren sich über Android-Fragmentierung. 🙂
Soweit Ihr Bild wird skaliert durch die status bar -- ja die status bar nimmt ein Stück aus dem Bildschirm heraus. Wie viel ist nicht definiert, es könnte also auch leicht variieren zwischen den Geräten. Das Fenster im hintergrund, wie durch Aktivität.getWindow().setBackgroundDrawable(), erstreckt sich hinter der status-bar (und IME oder andere variable Dekoration), so zumindest mit, verringert sich die Schwankung. Das heißt, die tatsächliche Anzeige könnte der Raum sein, geschnitzt aus anderen Gründen vom physikalischen Bildschirm-Größe, aber es absichtlich nicht genau definiert, was Teil des Bildschirms eine app bekommt zu spielen.
InformationsquelleAutor hackbod
Vergessen Sie nicht über die Droid A855 (480x854 Auflösung), oder das Galaxy Tab (1024 x 600), oder die vielen anderen Auflösungen gibt. Ihre beste Wette, wenn Sie es brauchen, pixel-perfekte, ist ein Bild zu machen, die Größe der größten Auflösung, die in Ihrer Kategorie (d.h. 480x854 für ein normales hdpi-Bildschirm) und
nur legen Sie es als eine Bildansicht, mit scaleType von centerCrop.Auf den zweiten Gedanken, eine Bildansicht arbeiten würde (wenn Sie mit android:background-Attribut), ist aber unnötig. Sie können einfach legen Sie die NinePatch hintergrund als background-Attribut des root-layout (z.B. RelativeLayout, LinearLayout). Wenn die NinePatch ist richtig formatiert, der hintergrund zentriert, und das Bild wird gestreckt, um fit die verbleibenden Raum ohne Verzerrung. Auf einem Nexus One, dann würden Sie das abschneiden der oberen und unteren 27 Pixel des Bildes, aber es wäre nicht in der Größe verändert werden.Einen besseren Vorschlag, abhängig von der Art von Bild es ist, wäre ein Teil davon in ein NinePatch. Zum Beispiel, wenn es eine kleine Grenze oder Rahmen auf die äußeren Kanten der primären Teil des Hintergrunds kleiner (430 x 750?), und machen den äußeren Kanten des Rahmens Strecke über NinePatch. Auf diese Weise, auch wenn es ein neues Gerät mit einer etwas anderen Auflösung ist, wird es immer noch skaliert, um richtig passen, ohne Dehnung.
Du bist herzlich willkommen, wenn das hilft! Aber wenn Sie eine hässliche Ergebnis aus einer erweiterten NinePatch, es ist etwas falsch mit entweder das NinePatch, oder die Umsetzung. Der Punkt, der ein NinePatch ist, dass es skalierbar auf jede beliebige Größe ohne Verzerrung. Es ist am besten mit Android nur vermeiden, denken sich die app immer haben eine bestimmte Auflösung, und arbeitet nur mit relativen Größe und Positionierung. Eine Sache, die verursachen könnten Ihre NinePatch problem ist, wenn Sie die Einstellung als eine Bildansicht des src-Attribut. Sie müssen verwenden Sie das background-Attribut. Ich werde klären, in meine Antwort.
Hallo wieder da 😀 Das Hauptproblem ist, dass das Bild nicht in der Größe geändert werden, weil seine Angaben... weil ich habe mehrere ninePatch Bilder vor 😀 (immer als hintergrund, das ist die einzige Weise, die Sie arbeiten). Ich denke, am Ende meiner designer-partner wird mich hassen, aber ich werde Fragen, für neue scallable Hintergründe . Nochmals vielen Dank 🙂
Hallo, mal wieder. 😛 Man kann es wirklich verwenden NinePatches außerhalb von nur einem einfachen hintergrund. Wenn Sie einen äußeren Rahmen, den Sie gerade haben, um einen Punkt auf beiden Seiten des content (für jede Seite des Rahmens) und das gleiche tun für die linke Seite. Wenn ich nach Hause komme, kann ich ein Beispiel für Sie, wenn Sie möchten.
InformationsquelleAutor kcoppock
War ich auch auf der Suche nach einer Lösung auf dem hintergrund der Gang hinter der statusbar bei der Verwendung der folgenden Methode: http://developer.android.com/resources/articles/window-bg-speed.html
Ich habe jetzt nur einen beliebigen Raum an der Spitze der bg-Grafik, um einen Ausgleich für die status bar.
Habe ich auch bemerkt, banding und ich glaube nicht, dass es ist, weil es wird in der Größe verändert wieder. Dieser Artikel behebt das Problem auf meinem Nexus S:
http://stuffthathappens.com/blog/2010/06/04/android-color-banding/ (auch Hinweise der Entwickler.android verlinkten Artikel oben)
InformationsquelleAutor amcc