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;
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 .
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.
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.
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.
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"/>
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.
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.
verwenden Sie die sdp-Bibliothek, die in github enthalten ist
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/
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.