webentwicklung-frage-antwort-db.com.de

Anwendungsskelett zur Unterstützung mehrerer Bildschirme

Wie wir wissen Android mit verschiedenen Geräten, die unterschiedliche Funktionen, Auflösungen und Bildschirmgrößen haben, 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 ist eine ziemliche Herausforderung beim Entwerfen und Entwickeln für Android Geräte. Während einige andere Hersteller (nicht Android) haben unterschiedliche Auflösungen und DPIs, sie haben die gleiche Bildschirmgröße und die Auflösungen folgen dem gleichen Seitenverhältnis. Daher kann ein Bild erstellt werden, das für Geräte geeignet ist, die nicht mit Android) kompatibel sind.

Meine Frage ist, dass es einen geeigneten Ablauf oder eine geeignete Architektur gibt, die man befolgen sollte, um die Anforderung zu erfüllen?

enter image description here

Denken Sie daran, wir haben Tablets unterschiedlicher Größe und Auflösung.

Mir ist bewusst, dass Android Developer diese Informationen enthält, aber meine Ansicht stammt aus der Implementierung.

Nach meinem Wissen ist es für das Entwerfen von Android Grafiken, die selbst Programmierer kennen müssen) das Konzept des Entwerfens.

89
Azhar Shaikh

Schließlich wurde eine Struktur erstellt, die Layouts und Symbole für mehrere Bildschirme handhabt.

Android verallgemeinert die Geräteanzeigen anhand von zwei Parametern in Kategorien:

  • Bildschirmgröße, die physikalische Größe des Displays (diagonal gemessen)
  • Bildschirmdichte, die physikalische Pixeldichte der Anzeige (in Pixel pro Zoll oder ppi)

Installieren Sie die App " What's my Size " für Android, um Bildschirmgröße und -dichte schnell zu bestimmen.

Bildschirmgröße

Android definiert vier allgemeine 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 klassifiziert (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ß eingestuft (größer als 4 Zoll).
  • Extra groß gilt für große Geräte, zum Beispiel große Tablets

Android definiert vier allgemeine 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

Normalerweise:

  • 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 wird aufgeführt hier die prozentuale Differenz des Gerätebildschirms

  • Ldpi-75%
  • Mdpi-100% (Basis laut Android Entwicklerseite)
  • HDPi-150%
  • XHdpi-200%

enter image description here

Aber da wir jetzt wissen, dass die meisten Geräte mit 480X800 geliefert werden, betrachte ich dies als basiertes Gerät, daher wird unsere neue Berechnung dies mögen

  • Ldpi- 50%
  • Mdpi-66,67%
  • HDPi-100%
  • XHdpi - 133,33%

dies bedeutet, dass das erste Symbol und Design nur für 480X800 und dann für die übrigen (d. h. Ldpi, Mdpi, Xhdpi) erstellt wird.

Es gibt Bilder, die für alle Layouts gleich sind und in Farbe und Form einheitlich sein müssen (keine komplexe Form, keine Kurve). Daher erstellen wir für diese Art von Bild 9patch, Die in "Zeichenbar" (ohne Suffix) eingefügt werden )" Mappe. Zum Erstellen von 9Patch-Bildern können Sie entweder DrawNinePatch oder BetterNinePatch verwenden

Benennen Sie nun Ihre Bilder um, basierend auf den Standards von Android, und vervollständigen Sie Ihre Anwendung mit hdpi. Nehmen Sie dann den Ordner drawable-hdpi Und öffnen Sie Adode Photoshop (empfohlen) create - Action mehrerer Größen (ändern Sie einfach die Größe entsprechend dem prozentualen Verhältnis) einmal Aktion für alle Größen erstellt, dann einfach Batch Automate und gib Quelle (drawable-hdpi) und Ziel (drawable-ldpi, drawable-mdpi, drawable-xdpi) an.

Der Grund, warum ich darauf bestehe, Photoshop zu verwenden, da die Größe Ihres Bilds mit Aktionen und einem weiteren Pluspunkt automatisch geändert wird, besteht darin, dass Sie die Datei nicht umbenennen müssen (sie erhält denselben Namen wie die ursprüngliche).

wenn Sie alle Bilder erstellt haben, aktualisieren Sie Ihr Projekt und testen Sie es.

Manchmal besteht die Möglichkeit, dass das Layout, das den Bildschirm (xhdpi, hdpi, mdpi) unterstützt, in einen kleinen Bildschirm (ldpi) geschnitten wird. Erstellen Sie dazu einfach einen separaten Layout-Ordner (layout-small) und fügen Sie ScrollView(meistens). Das ist es.

Tablet Tablets werden in zwei Größen eingeteilt.

  1. 7 "(1024X (600-48 (Navigationsleiste))) = 1024X552 (groß ziehbar)
  2. 10 "(1280X (800-48 (Navigationsleiste))) = 1280X752 (xlarge)

In diesem müssen wir ein Bild für beide Bildschirme erstellen und sie entsprechend platzieren

Alles in allem haben wir diesen Ordner in unserer Anwendung, um mehrere Bildschirme zu unterstützen.

drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-large
drawable-xlarge

wird mehr Qualifier-Kombination mit Screen size and Screen density

drawable-large-ldpi
drawable-large-mdpi
drawable-large-hdpi
drawable-large-xhdpi

mehr Qualifier mit Screen density and Version

drawable-ldpi-v11
drawable-mdpi-v11
drawable-hdpi-v11
drawable-xhdpi-v11

und mehr Qualifier mit Screen size and Version

drawable-large-v11
drawable-xlarge-v11

und mehr Qualifier mit Smallest width concept(SW)

 drawable-sw???dp

Außerdem wurde in Android V3.0 Honeycomb das neue Konzept von SW(smallest width) eingeführt, bei dem Geräte nach Bildschirmbreite kategorisiert werden. Wenn wir also einen Ordner mit dem Namen drawable-sw360dp Erstellen, Das Gerät mit 720dp (entweder Breite oder Höhe) verwendet Ressourcen aus diesem Ordner.

zum Beispiel, um den Samsung Galaxy S3 dp als Suffix zu drawable-sw? dp zu finden
Mit Bezug auf DP Calculation , Wenn Sie Ihr Layout unterstützen oder nach S3 zeichnen möchten, lautet 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 setzen wert,

     dp= 720 / (320/160);
     dp=360. 

also erledigt drawable-sw360dp den Job

Holen Sie sich die Gerätekonfiguration von GsmArena Sameway. Sie können auch Ordner entsprechend der Android API-Version des Geräts erstellen, dh drawable-hdpi-v11`, also das Gerät, das API11 hat und es ist dann Hdpi Es wird diese Ressourcen verwenden.

Zusätzliche Tipps:

  • Verwenden Sie relative Layouts, dp, sp und mm

    dp units - geräteunabhängige Pixel, die auf einem 160-ppi-Bildschirm auf 1 physikalisches Pixel normiert sind, d. h. mittlere Dichte. Zur Laufzeit skaliert. Verwenden Sie diese Option für Bildschirmelementabmessungen

    sp units - skalierte Pixel, angegeben als Gleitkommawerte, basierend auf dp-Einheiten, aber zusätzlich skaliert für die Einstellung der Schriftgröße des Benutzers. Zur Laufzeit skaliert. Für Schriftgrößen verwenden

    Sie sollten RelativeLayout immer für Layouts verwenden; AbsoluteLayout ist veraltet und sollte nicht verwendet werden.

  • Verwenden Sie geeignete Bildformate - PNG versus JPEG

    Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.

    PNG und JPEG sind jedoch keine Entsprechungen. Sie haben unterschiedliche Kompromisse bei der Qualität, und PNG ist nicht immer das Beste:

    [~ # ~] jpeg [~ # ~] kann bis zu 50% Dateigrößenreduzierung gegenüber PNG bieten, was wichtig ist, wenn Ihre App bildintensiv ist

    Ein "verlustbehaftetes" JPEG mit höherer Qualität sieht bei gleicher Dateigröße möglicherweise besser aus als ein hochkomprimiertes "verlustfreies" PNG

  • Fügen Sie Ihren Bildern und Grafiken Beschriftungen zum Debuggen hinzu

  • Verwenden Sie das support-screens-Element

  • Konfigurieren Sie Ihre Emulatoren mit realen Gerätewerten

    Herkömmlicherweise werden Desktop-Systeme mit 72ppi (Mac) oder 96ppi (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 die tatsächlichen Gerätewerte imitieren, und stellen Sie sie immer so ein, dass sie zur Emulation der Gerätedichte skaliert werden.

    In Eclipse ist es einfach, mehrere Emulatoren zu erstellen (wählen Sie in der Eclipse-Menüleiste Window> AVD Manager> New ), die mit Werten für echte Geräte konfiguriert sind:

    Nennen Sie den Emulator für das zu emulierende reale Gerät. Geben Sie die Auflösung an. Verwenden Sie keine integrierten generischen Größen. Stellen Sie die Gerätedichte so ein, dass sie mit dem realen Gerät übereinstimmt. (Stellen Sie im Bereich Hardware die Eigenschaft Abstracted LCD auf die reale Dichte ein. immer ein ganzzahliger Wert)

    Wenn Sie das Gerät starten, wählen Sie immer Anzeige auf tatsächliche Größ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, die von der Dichte abhängigen Bildressourcen werden jedoch nicht wie beabsichtigt angezeigt.

    Natürlich wird durch nichts, was Sie tun, eine Bildqualität mit höherer Dichte auf einem Desktop-Display mit niedrigerer Dichte wiedergegeben.

Hier sind die Daten, die während eines Zeitraums von sieben Tagen bis zum 1. Oktober 2012 gesammelt wurden. Um die neueste Statistik zur Plattformversion von Android zu erhalten, hier

Basierend auf der Bildschirmgröße

enter image description here

Basierend auf der Bildschirmdichte

enter image description here

146
Azhar Shaikh

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:

  • ldpi: 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 nutzen, sollten dehnbare Komponenten in beiden Richtungen (horizontal und vertikal) verwendet werden. Detaillierte Informationen finden Sie hier:

http://vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer/

1
Alok Vaish