Android und unterstützt mehrere Bildschirme Layouts

Ich beende eine Android-App, es bleibt alles, um die UI-Layouts und Grafiken für mehrere Geräte anzupassen. Ich brauche bestimmte Elemente, die in bestimmten Positionen auf dem Bildschirm platziert sind.

Die Android-Dokumente erklären, wie die mehrfachen Bildschirmauflösungen und -größen klassifiziert werden und das Ressourcen-Tagging-System erklären.

  • Muss Bugsense Crash Handler in jeder Aktivität einer Android-Anwendung aufgerufen werden?
  • Wie man das Edittext-Feld für Dezimalstellen macht
  • Muss Mobile Apps dem EU-Cookie-Gesetz entsprechen?
  • Wie wickeln Sie Image-Schaltflächen in einem horizontalen linearen Layout?
  • Wiederholen von Bitmap auf Google Maps v2 für Android
  • ORMLite-Beispiele für Android werden nicht kompiliert
  • Zum Beispiel werden sowohl WVGA800 (480x800) als auch WVGA854 (480x854) als normale Hochgeschwindigkeitsbildschirme klassifiziert. Um diese zu erfüllen, werden Sie aufgefordert, einen Ordner namens "Layout" (bereits vorhanden für "normal") und "drawable-hdpi" zu erstellen.

    Das Problem ist, dass dies nichts zu unterscheiden zwei Geräte der gleichen Klassifizierung, auch wenn Sie "dp" Einheiten verwenden. Wie können Sie Layouts / Drawables für WGA800 und für WGA854 separat zur Verfügung stellen?

    Die Verhältnisse sind hinreichend unterschiedlich, dass der Benutzer leicht feststellt, schlechte Skalierung, und dies wird durch meine Notwendigkeit für Dinge wie eine Punktzahl und Timer, um an einem bestimmten Ort vor einem Hintergrundbild erscheinen verschärft.

    Das gleiche Problem gilt für die Paare {WQVGA400 (240×400), WQVGA432 (240×432)} und {WVGA800 (480×800), WVGA854 (480×854)}. Wie können Sie Layout / Drawables für WQVA400 und für WQGA432?

  • CollapsingToolbarLayout scrolling Verhalten auf Tabletten
  • Android-Präferenz Fragment Textfarbe
  • Android SDK equivllent für viewWillAppear (iOS)?
  • Verwenden von Client / Server-Zertifikaten für Zwei-Wege-Authentifizierung SSL-Socket auf Android
  • Gebäude FFMPEG mit librtmp für android
  • Wie kann ich die Accessibility Settings Seite von meiner APP in Android starten?
  • 3 Solutions collect form web for “Android und unterstützt mehrere Bildschirme Layouts”

    Ich glaube, du bist auf der Straße zur Hölle.

    Android läuft auf einer enormen Vielzahl von Geräten, mehr jede Woche, und viele Formate gibt es noch nicht, aber wird neue Variablen vorstellen. Also, auch wenn es Ihnen gelingt, wird ein neues Gerät mit einer etwas anderen Bildschirmgröße und Ihre App scheitern.

    Es ist ein Fehler, für Android mit bestimmten Bildschirmauflösungen zu entwerfen, und ähnelt den Problemen, die Sie finden würden, wenn Sie alle Seiten gezwungen haben, die gleiche Größe im Internet zu haben, funktioniert es nur selten gut (zB sogar eine ordentliche Website mit fester Breite Wird miserabel auf mobilen Geräten scheitern).

    Android wurde entworfen, um all diese Variante zu unterstützen, aber wenn Sie versuchen, pixel-perfekt absolut positioniert Rendering auf jedem Bildschirm Größe, die Sie schwimmen gegen die Flut zu bekommen. Es ist wahrscheinlich sehr schmerzhaft, sehr zeitaufwändig und teuer und wahrscheinlich scheitern. Auch wenn es Ihnen gelingt, wie auf der Erde werden Sie es auf all diesen Bildschirmvarianten testen? Es klingt wie die Hölle zu testen

    Ich empfehle Ihnen, dass Sie nicht alles tun können, was genau so ist, wie Sie es brauchen, und stattdessen, wie man Wege benutzt, um Objekte fließend, relativ zueinander zu machen, so dass die App in allen Variationen gut aussieht und die verschiedenen Layouts verwendet Jede Gruppe von Auflösungen zur Verbesserung der Erfahrung auf verschiedenen Größen-Bildschirme.

    JA, das ist möglich:

    Zuerst müssen Sie eine Instanz der Display-Klasse erstellen. Danach bekommst du die Breite und Höhe des Displays. Dann können Sie jede Auflösung in einer Schleife überprüfen, indem Sie den if-Operator verwenden und das gewünschte Bild einstellen.

    Beispiel:

     ImageView iview=(ImageView)findViewById(R.id.imageView1); //here are the Bitmaps optimized for each screen resolution Bitmap[] bitmaps={BitmapFactory.decodeResource(getResources(), R.drawable.icwvga800),BitmapFactory.decodeResource(getResources(), R.drawable.icwvga854),(...)}; // In this list all supported screensizes are defined int[][] possibleScreenSolutions={{480,800},{480,854},{240,400},{240,432},{480,800},{480,854}}; Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); int[] ScreenSolution={display.getWidth(),display.getHeight()}; // Compare the real screen solution with the all supported ones for(int i=0;i<possibleScreenSolutions.length;i++){ if((ScreenSolution[0]==possibleScreenSolutions[i][0])&&(ScreenSolution[1]==possibleScreenSolutions[i][1])){ iview.setImageBitmap(bitmaps[i]);// set the image } } 

    Ich stimme mit Ollie C zu: Es ist zu verwirrend, um alle Auflösungen zu überprüfen, aber es ist zumindest möglich.

    Ich habe es schon mal getestet: Es funktioniert.

    Neben der Antwort / Kommentare an anderer Stelle auf dieser Seite möchte ich noch eine Antwort auf meine eigene Frage stellen, die auf die Art der Bildschirmressourcen aufmerksam macht, die eingeführt werden können. Ich bin nicht davon überzeugt, dass dies in den Android-Dokumenten deutlich gemacht wird, aber soweit es sich um Zeichensätze handelt, können Sie Bildschirmgrößen-Tags zu zeichnenden Dateien auf das dpi-Tag hinzufügen.

    Zum Beispiel ist das Hinzufügen eines Ordners namens drawable-large-mdpi gültig und Geräte mit großen Bildschirmen und mittlerer Auflösung ziehen Ressourcen von hier, wenn sie können. Warnung aber, die Reihenfolge der Tags drawable-mdpi-large : deklarieren drawable-mdpi-large ist ein Fehler.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.