Anwendungsskelett zur Unterstützung mehrerer Bildschirme
Lesezeit: 9 Minuten
Mohammed Azharuddin Scheich
Wie wir wissen, wird Android mit verschiedenen Geräten geliefert, die unterschiedliche Funktionen, Auflösungen und Bildschirmgrößen haben. Daher gibt es bei der Entwicklung einer Anwendung, die mehrere (kleine und große) Bildschirme unterstützt, ein Hindernis in Bezug auf Größe und Layout.
Dies führt zu unterschiedlichen Kombinationen von Bildschirmgrößen, Auflösungen und DPIs und stellt eine ziemliche Herausforderung dar, wenn es um Design und Entwicklung für Android-Geräte geht. Während einige andere Hersteller (nicht Android) unterschiedliche Auflösungen und DPI haben, haben sie die gleiche Bildschirmgröße und die Auflösungen folgen dem gleichen Seitenverhältnis. Daher kann ein Image erstellt werden, das für Nicht-Android-Geräte geeignet ist.
Meine Frage ist, ob es einen richtigen Ablauf oder eine richtige Architektur gibt, der man folgen sollte, um die Anforderung zu erfüllen?
Denken Sie daran, dass wir Tablets unterschiedlicher Größe und Auflösung haben.
Das ist mir bewusst Android-Entwickler enthält diese Informationen, aber meine Ansicht ist von der Implementierung.
Meines Wissens nach habe ich verstanden, dass zum Entwerfen von Android-Grafiken sogar Programmierer das Designkonzept kennen müssen.
Seid ihr sicher, dass diese Frage nicht konstruktiv ist?
– Scheich Mohammed Azharuddin
3. September 2012 um 5:03 Uhr
Ich finde es sehr konstruktiv. Würde gerne die Gründe für die negativen Stimmen wissen.
– Fauler Ninja
3. September 2012 um 5:13 Uhr
@MKJParekh nehmen MicroMax Funbookgsmarena.com/micromax_funbook_p300-4701.php7", 480X800, Ldpi (133 dpi) Können Sie mir sagen, in welche Kategorie (Drawble-Large oder Ldpi oder Android v3.0 sw-480) es fallen wird?
– Scheich Mohammed Azharuddin
3. September 2012 um 6:55 Uhr
@LazyNinja Der Grund für die Ablehnung von Stimmen sind Verrückte und Verrückte. Wer nur glaubt, kann nur konstruktive Fragen stellen :p
– AZ_
22. August 2014 um 3:03 Uhr
@AZ_ 🙂 Wir haben diese Res-Struktur im Res-Ordner verwendet. xhdpi drawable-xhdpi-v11 drawable-xxhdpi drawable-xxhdpi-v11 Layout Layout-kleines Layout-sw530dp Layout-sw720dp Layout-xlarge Werte Werte-sw530dp Werte-sw720dp Werte-v14 Werte-xlarge und gut definierte Dimensionen in XML aus dem Werteordner verwendet . Zu Ihrer Information, unsere Anwendung unterstützt mehr als 5.000 Gerätetypen.
– MKJParekh
28. August 2014 um 8:52 Uhr
Schließlich wurde eine Struktur erstellt, die Layouts und Symbole für mehrere Bildschirme handhabt.
Android verallgemeinert Geräteanzeigen in Kategorien basierend auf zwei Parametern:
Bildschirmgröße, die physikalische Größe des Displays (diagonal gemessen)
Bildschirmdichte, die physische Pixeldichte des Displays (in Pixel pro Zoll oder ppi).
Um die Bildschirmgröße und -dichte schnell zu bestimmen, installieren Sie bitte “Was ist meine Größe“App für Android.
Bildschirmgröße
Android definiert vier verallgemeinerte Bildschirmgrößen:
Qualifier Size
small ~3 inches (approx)
normal ~4 inches (approx)
large Exceeds 4 inches
xlarge Exceeds 7 inches
Die meisten Telefone werden als klein oder normal eingestuft (ungefähr 3 bis 4 Zoll diagonal). Aber jetzt gibt es viele Handys mit großem Bildschirm wie Galaxy S4, HTC One, Xperia Z
Ein kleines Tablet wie das Samsung Galaxy Tab wird als groß (größer als 4 Zoll) eingestuft.
Extragroß gilt für große Geräte, zum Beispiel große Tablets
Android definiert vier verallgemeinerte Bildschirmdichten:
Qualifier Description Nominal value
ldpi low density 120 ppi
mdpi medium density 160 ppi
hdpi high density 240 ppi
xhdpi extra high density 320 ppi
Typischerweise:
Die Bildschirmgröße hat den größten Einfluss auf Ihre App-Layouts
Die Bildschirmdichte hat den größten Einfluss auf Ihre Bild- und Grafikressourcen
Es ist aufgeführt Hier der prozentuale Unterschied des Gerätebildschirms
Ldpi- 75 %
Mdpi- 100 % (Basis laut Android-Entwicklerseite)
HDPI- 150 %
XHDPI- 200 %
Aber wie wir jetzt wissen, kommen die meisten Geräte mit 480X800 Ich betrachte dies also als basierendes Gerät, also wird unsere neue Berechnung so aussehen
Ldpi- 50 %
Mdpi- 66,67 %
HDPI- 100 %
XHDPI- 133,33 %
was bedeutet, dass das erste Symbol und Design für erstellt werden 480X800 erst und dann für restliche (dh Ldpi, Mdpi, Xhdpi).
Es gibt Bilder, die für alle Layouts gleich sind und in Farbe und Form einheitlich sein müssen (keine komplexe Form, keine Kurve), also erstellen wir für diese Art von Bild 9patch die in den Ordner „drawable(no-suffix)“ gelegt werden. Um ein 9Patch-Image zu erstellen, können Sie entweder verwenden DrawNinePatch oder BetterNinePatch
Benennen Sie jetzt einfach Ihre Bilder basierend auf den Standards von Android um und vervollständigen Sie Ihre Anwendung mit hdpi und dann einfach nehmen drawable-hdpi Ordner und Öffnen Adobe Photoshop(empfohlen) erstellen Aktion von mehreren Größen (ändern Sie einfach die Größe entsprechend dem prozentualen Verhältnis), sobald die Aktion für alle Größen erstellt wurde, dann tun Sie es einfach Stapelautomatisierung und gib source(drawable-hdpi) und destination(drawable-ldpi, drawable-mdpi, drawable-xdpi) an.
Der Grund, warum ich darauf bestehe, dass Sie Photoshop verwenden, weil es die Größe Ihres Bildes automatisch mit Aktionen ändert, und ein weiterer Pluspunkt ist, dass Sie die Datei nicht umbenennen müssen (es wird denselben Namen wie das Original zuweisen).
Wenn Sie mit der Erstellung aller Bilder fertig sind, aktualisieren Sie Ihr Projekt und testen Sie es.
Manchmal besteht die Möglichkeit, dass das Layout, das Bildschirme (xhdpi, hdpi, mdpi) unterstützt, in einen kleinen Bildschirm (ldpi) geschnitten wird. Erstellen Sie zur Handhabung einfach einen separaten Layoutordner (layout-small) dafür und fügen Sie ihn hinzu ScrollView(meistens). Das ist es.
Tablette
Tabletten werden in zwei Größen eingeteilt.
und mehr Qualifizierer mit Screen size and Version
drawable-large-v11
drawable-xlarge-v11
und mehr Qualifizierer mit Smallest width concept(SW)
drawable-sw???dp
Darüber hinaus haben sie in Android V3.0 Honeycomb ein neues Konzept eingeführt SW(smallest width) in welchem Gerät werden in Bildschirmbreite kategorisiert, also wenn wir einen Ordner mit dem Namen erstellen drawable-sw360dp dann verwendet das Gerät mit 720 dp (entweder Breite oder Höhe) Ressourcen aus diesem Ordner.
zum Beispiel um die zu finden Samsung Galaxy S3dp anhängen Drawable-sw?dp
Unter Bezugnahme auf DP-BerechnungWenn Sie Ihr Layout oder drawable zu S3 unterstützen möchten, dann sagt die Berechnung
px= Gerätebreite = 720 dpi= Gerätedichte= 320
Formel gegeben
px = dp * (dpi / 160)
Formel austauschen, weil wir den Wert von px haben
dp = px / (dpi / 160)
Jetzt Wert legen,
dp= 720 / (320/160);
dp=360.
damit drawable-sw360dp wird die Arbeit erledigen
Holen Sie sich Ihre Gerätekonfiguration ab GSMArena
Genauso können Sie auch einen Ordner gemäß der Android-API-Version des Geräts erstellen, dh drawable-hdpi-v11`, sodass das Gerät mit API11 und Hdpi diese Ressourcen verwendet.
Zusätzliche Tipps:
Verwenden Sie relative Layouts, dp, sp und mm
dp-Einheiten – Geräteunabhängige Pixel normalisiert auf 1 physisches Pixel auf einem 160 ppi Bildschirm, dh mittlerer Dichte. Zur Laufzeit skaliert. Für Bildschirmelementabmessungen verwenden
sp-Einheiten – skalierte Pixel, angegeben als Fließkommawerte, basierend auf dp-Einheiten, aber zusätzlich skaliert für die Einstellung der Schriftgröße des Benutzers. Zur Laufzeit skaliert. Verwenden Sie für Schriftgrößen
Sie sollten immer RelativeLayout für Layouts verwenden; AbsoluteLayout ist veraltet und sollte nicht verwendet werden.
Verwenden Sie geeignete Bildformate – PNG oder JPEG
Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.
PNG und JPEG sind jedoch keine Äquivalente. Sie haben unterschiedliche Qualitätskompromisse und PNG ist nicht immer am besten:
JPEG kann gegenüber PNG eine Reduzierung der Dateigröße um bis zu 50 % bieten, was erheblich ist, wenn Ihre App bildintensiv ist
Ein „verlustbehaftetes“ JPEG höherer Qualität kann bei gleicher Dateigröße besser aussehen als ein stark komprimiertes „verlustfreies“ PNG
Fügen Sie Ihren Bildern und Grafiken Labels zum Debuggen hinzu
Verwenden Sie das Supports-Screens-Element
Konfigurieren Sie Ihre Emulatoren mit echten Gerätewerten
Herkömmlicherweise werden Desktop-Systeme mit 72 ppi (Mac) oder 96 ppi (Windows, Linux) angezeigt. Im Vergleich zu Mobilgeräten weisen Desktop-Displays immer eine geringe Dichte auf.
Konfigurieren Sie Ihre Android-Emulatoren immer so, dass sie echte Gerätewerte nachahmen, und stellen Sie sie immer so ein, dass sie die Gerätedichte emulieren.
In Eclipse ist es einfach, mehrere Emulatoren zu erstellen (wählen Sie in der Eclipse-Menüleiste Fenster > AVD-Manager > Neu) konfiguriert mit Werten für reale Geräte:
Benennen Sie den Emulator für das reale Gerät, das es emuliert. Geben Sie die Auflösung an, verwenden Sie keine integrierten generischen Größen.
Wählen Sie beim Starten des Geräts immer Anzeige auf Originalgröße skalieren und geben Sie die tatsächliche Bildschirmgröße in Zoll ein.
Wenn Sie die Gerätedichte nicht festlegen, verwendet der Emulator standardmäßig eine niedrige Dichte und lädt immer ldpi-spezifische Ressourcen. Die Auflösung (Pixelabmessungen) ist korrekt, aber Ihre dichteabhängigen Bildressourcen werden nicht wie beabsichtigt angezeigt.
Natürlich wird nichts, was Sie tun, eine Bildqualität mit höherer Dichte auf einem Desktop-Display mit geringerer Dichte reproduzieren.
Hier sind die Daten, die während eines Zeitraums von 7 Tagen bis zum 1. Oktober 2012 gesammelt wurden. Um die neueste Statistik über die Version der Android-Plattform anzuzeigen, gehe hierher
Basierend auf der Bildschirmgröße
Basierend auf der Bildschirmdichte
Für Samsung Galaxy Tab 7″ müssen wir Bilder unter drawable-large-hdpi halten, sonst wird das Bild gedehnt oder gestaucht.
– Rajpara
4. September 2012 um 7:08 Uhr
@rajpara es gibt viele Kombinationen und Permutationen, wir werden alle diese Fälle später einschließen.
– Scheich Mohammed Azharuddin
4. September 2012 um 7:10 Uhr
siehe @AlexBonel, ja, ich stimme dir zu, aber mein Hauptmotto ist es, darauf aufmerksam zu machen, wie Dinge getan werden können, wenn es um Multi-Screen-Unterstützung geht. Man kann diesen Fluss/dieses Konzept modifizieren/manipulieren, da das Obige dazu dient, das anfängliche Problem zu verdeutlichen. Außerdem mache ich auch Modifikationen basierend auf dem Anwendungsdesign. Ihr Beitrag gibt mir das Gefühl, dass Sie das Konzept verstanden haben. Hoffe du hast meinen Punkt verstanden.
– Scheich Mohammed Azharuddin
19. März 2013 um 13:37 Uhr
Gute Antwort. Nachdem ich viel und so viele Tage gesucht hatte, warum diese Ausnahmen auftreten, erhielt ich diesen Beitrag als beste Antwort mit großartigem Beispiel und Erklärung. Betrachten Sie zB Halo Value 7-Zoll-Tablet. PPI=133. Auflösung = 480 * 800. Größe = 7 ‘Zoll. Wenn wir mdpi als Basis betrachten, sollte es die in values-sw480 definierte Dimension annehmen, aber es nimmt die Dimension von values-sw600. Ich habe nicht verstanden, warum dies geschieht. Wirklich vielen Dank für deinen Beitrag. Sparen Sie Zeitverlust und beseitigen Sie die Verwirrung. Ich denke, das sollte auf der offiziellen Seite von Android sein. Schätzen Sie Ihre Bemühungen.
– Süß
19. Mai 2015 um 6:37 Uhr
Ich denke, das ist die beste Antwort, die ich je gesehen habe. Ich suche seit langem nach einer solchen Antwort. Und endlich habe ich es verstanden. Vielen Dank an alle, die zu dieser Antwort beigetragen haben, um sie verständlicher zu machen.
– Hiren Dixit
27. Juli 2016 um 14:16 Uhr
Designer sollten Basisdesigns von erstellen
base size of mdpi devices * density conversion factor of highest supported density bucket
size.Base Bildschirmgröße ist 320 x 480 px und Dichte-Buckets sind wie folgt:
lpi: 0,75
mdpi: 1,0 (Basisdichte)
hdpi: 1,5
xhdpi: 2.0
xxhdpi: 3.0
xxxhdpi: 4.0
Und um zusätzlichen verfügbaren Speicherplatz auf Android-Geräten zu bewältigen, sollten dehnbare Komponenten in beide Richtungen (horizontal und vertikal) verwendet werden. Detaillierte Informationen finden Sie hier:
Seid ihr sicher, dass diese Frage nicht konstruktiv ist?
– Scheich Mohammed Azharuddin
3. September 2012 um 5:03 Uhr
Ich finde es sehr konstruktiv. Würde gerne die Gründe für die negativen Stimmen wissen.
– Fauler Ninja
3. September 2012 um 5:13 Uhr
@MKJParekh nehmen
MicroMax Funbook
gsmarena.com/micromax_funbook_p300-4701.php7", 480X800, Ldpi (133 dpi)
Können Sie mir sagen, in welche Kategorie (Drawble-Large oder Ldpi oder Android v3.0 sw-480) es fallen wird?– Scheich Mohammed Azharuddin
3. September 2012 um 6:55 Uhr
@LazyNinja Der Grund für die Ablehnung von Stimmen sind Verrückte und Verrückte. Wer nur glaubt, kann nur konstruktive Fragen stellen :p
– AZ_
22. August 2014 um 3:03 Uhr
@AZ_ 🙂 Wir haben diese Res-Struktur im Res-Ordner verwendet. xhdpi drawable-xhdpi-v11 drawable-xxhdpi drawable-xxhdpi-v11 Layout Layout-kleines Layout-sw530dp Layout-sw720dp Layout-xlarge Werte Werte-sw530dp Werte-sw720dp Werte-v14 Werte-xlarge und gut definierte Dimensionen in XML aus dem Werteordner verwendet . Zu Ihrer Information, unsere Anwendung unterstützt mehr als 5.000 Gerätetypen.
– MKJParekh
28. August 2014 um 8:52 Uhr