it-swarm.com.de

Wie unterstützt man unterschiedliche Bildschirmgrößen in Android?

Ich entwickle eine App in Android und muss alle unterschiedlichen Bildschirmgrößen und -dichte unterstützen. Ich habe also einen anderen Ordner für das Layout erstellt: layout-small layout-large und layout

Dann habe ich einen anderen Ordner für das Image erstellt: ldpi, mdpi und hdpi. In allen gezeichneten Ordnern muss das Bild eine andere Größe haben. Ich frage diese Ursache, weil ich ein Telefon mit einer großen Bildschirmgröße und mittlerem Dichteumfang habe;

42
JackTurky

Für unterschiedliche Bildschirmgröße: Im Folgenden finden Sie eine Liste von Ressourcenverzeichnissen in einer Anwendung, die unterschiedliche Layoutdesigns für verschiedene Bildschirmgrößen und verschiedene Bitmap-Zeichenobjekte für kleine, mittlere, hohe und sehr hohe Bildschirme bietet.

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

Der folgende Code im Manifest unterstützt alle dpis.

<supports-screens Android:smallScreens="true" 
          Android:normalScreens="true" 
          Android:largeScreens="true"
          Android:xlargeScreens="true"
          Android:anyDensity="true" />

Und auch meine SO Antwort .

69
Uttam

Sie können statt der Einheit dp auch die Einheit sdp verwenden. Die Größeneinheit sdp ist relativ zur Bildschirmgröße und wird daher häufig für die Ausrichtung auf mehrere Bildschirmgrößen bevorzugt.

Verwenden Sie es sorgfältig! In den meisten Fällen müssen Sie beispielsweise noch ein anderes Layout für Tablets erstellen.

8

Ab Android 3.2 (API-Ebene 13) werden Größengruppen (Ordner klein, normal, groß, xlarge) zugunsten eines neuen Verfahrens zum Verwalten der Bildschirmgrößen auf der Grundlage der verfügbaren Bildschirmbreite verworfen.



Es gibt verschiedene Ressourcenkonfigurationen, die Sie basierend auf dem für Ihr Layout verfügbaren Platz angeben können:

1) Kleinste Breite - Die grundlegende Größe eines Bildschirms, angegeben durch die kürzeste Abmessung des verfügbaren Bildschirmbereichs.

Qualifikationswert: sw'dp value'dp

Z.B. res/sw600dp/layout.xml -> wird für alle Bildschirmgrößen verwendet, die größer oder gleich 600dp sind. Die Geräteausrichtung wird dabei nicht berücksichtigt .


2) Available Screen Width - Gibt eine verfügbare Mindestbreite in dp-Einheiten an, bei der die Ressourcen verwendet werden sollen.

Qualifikationswert: w'dp value'dp

Z.B. res/w600dp/layout.xml -> wird für alle Bildschirme verwendet, deren Breite größer oder gleich 600dp ist .


3) Available Screen Height - Gibt eine minimale Bildschirmhöhe in dp-Einheiten an, bei der die Ressourcen verwendet werden sollen.

Qualifikationswert: h'dp value'dp

Z.B. res/h600dp/layout.xml -> wird für alle Bildschirme verwendet, deren Höhe größer oder gleich 600dp ist .



Am Ende könnte Ihre Ordnerstruktur so aussehen:

res/layout/layout.xml -> für Mobilteile (kleiner als 600dp verfügbare Breite)
res/layout-sw600dp/layout.xml -> für 7-Zoll-Tablets (600 dp und größer)
res/layout-sw720dp/layout.xml -> für 10-Zoll-Tablets (720dp breit und größer)


Weitere Informationen finden Sie in der offiziellen Dokumentation:
https://developer.Android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

6
Schwesi

Android kann von selbst angepasst werden. Sie können separate Bilder für verschiedene Ordner erstellen, wenn Sie verschiedene Bilder für hochauflösende Geräte und andere Geräte verwenden möchten. Ansonsten legen Sie einfach einen zeichnerischen Layout-Ordner an. Nur für einige Bilder können Sie auch 9-Patches erstellen.

Lies hier

sie benötigen die Berechtigung im Manifest für mehrere Bildschirme Supportlink

<supports-screens Android:resizeable=["true"| "false"]
                  Android:smallScreens=["true" | "false"]
                  Android:normalScreens=["true" | "false"]
                  Android:largeScreens=["true" | "false"]
                  Android:xlargeScreens=["true" | "false"]
                  Android:anyDensity=["true" | "false"]
                  Android:requiresSmallestWidthDp="integer"
                  Android:compatibleWidthLimitDp="integer"
                  Android:largestWidthLimitDp="integer"/>
3
ud_an

Es klingt erhaben, wenn es darum geht, mehrere Bildschirmgrößen zu unterstützen. Die folgenden Ergebnisse erzielen bessere Ergebnisse.

res/layout/layout-w120dp
res/layout/layout-w160dp
res/layout/layout-w240dp
res/layout/layout-w160dp
res/layout/layout-w320dp
res/layout/layout-w480dp
res/layout/layout-w600dp
res/layout/layout-w720dp

Überprüfen Sie die Breite und Höhe des Geräts mithilfe von Anzeigemetriken

Legen Sie fest, welches Layout für die resultierende Breite des Geräts passt.

let smallestScreenWidthDp="assume some value(Which will be derived from Display metrics)"

Alle sollten vor setContentView () überprüft werden, andernfalls geraten Sie in Schwierigkeiten 

     Configuration config = getResources().getConfiguration();

     Configuration config = getResources().getConfiguration();

        if (config.smallestScreenWidthDp >= 600) {
            setContentView(R.layout.layout-w600dp);
        } else {
            setContentView(R.layout.main_activity);
        }

Im oberen Bereich habe ich so viele Layouts für mehrere Bildschirme erstellt, es hängt alles von Ihnen ab, ob Sie es können oder nicht. Sie können die Play Store-Bewertungen über die API sehen .

Ich hoffe, es hilft Ihnen viel. Wenige verwendeten einige Bibliotheken von Drittanbietern. Dies kann Ihre Arbeit einschränken, aber das ist nicht die beste Vorgehensweise. Gewöhnen Sie sich an Android Best Practices.

Check out

3
Trinadh Koya

Sie können die Abmessungen des Bildschirms dynamisch ermitteln

Display mDisplay= activity.getWindowManager().getDefaultDisplay();
int width= mDisplay.getWidth();
int Height= mDisplay.getHeight();

Das Layout kann anhand der Breite und der Höhe festgelegt werden, die mit dieser Methode erhalten werden.

2
Sathish

verwenden Sie die sdp-Bibliothek, die in github enthalten ist

1
DEEP ADHIYA

sie können Bitmaps für die hohe Auflösung/Größe Ihrer Anwendung erstellen und deren Größe im Code ändern (zur Laufzeit).

Überprüfen Sie diesen Artikel http://nuvornapps-de.blogspot.com.es/

0
Nuvorn Apps

Hinzufügen zu @ud_an

Es ist keine gute Praxis, verschiedene Ordner für Layouts zu erstellen. Erstellen Sie Ihr Layout so, dass es für alle Bildschirmgrößen geeignet ist. Um dies zu erreichen, spielen Sie mit den Layoutattributen. Sie benötigen nur unterschiedliche Bilder für die Typen hdpi, mdpi und ldpi. Der Rest wird von Android OS verwaltet.

0
Shafi