Adaptive Apps unterstützen Displays aller Größen: den gesamten Gerätebildschirm, anpassbare Fenster im Mehrfenstermodus, Hoch- und Querformat sowie zu- und aufgeklappte Displays faltbarer Geräte.
Eine kurze Liste von Konfigurationseinstellungen und APIs ermöglicht es Ihnen, adaptive Apps zu entwickeln. Einige veraltete Einstellungen und APIs sind jedoch nicht mit adaptiven Apps kompatibel und müssen vermieden werden.
Größenanpassung
Adaptive Apps unterstützen die Anpassung der App-Größe und den Mehrfenstermodus.
Mit dem Attribut resizeableActivity der Manifestelemente <activity> und <application> wird der Mehrfenstermodus unter Android 11 (API‑Level 30) und niedriger aktiviert oder deaktiviert. Unter Android 12 (API-Level 31) und höher wird der Mehrfenstermodus auf großen Displays unabhängig vom Attribut unterstützt. Weitere Informationen finden Sie unter Unterstützung des Mehrfenstermodus.
Aktivieren Sie die Unterstützung von Mehrfenster- und Multitasking-Szenarien in Ihrer App, um die Produktivität und Zufriedenheit der Nutzer zu steigern.
Legen Sie resizeableActivity="true" fest, wenn Ihre App auf API-Levels unter 24 ausgerichtet ist. Andernfalls können Sie es ignorieren, da es unter Android 7.0 (API‑Level 24) und höher standardmäßig true ist.
Legen Sie resizeableActivity="false" für kein API-Level fest. Schließen Sie Ihre App nicht von Anwendungsfällen aus, die den Multi-Window-Modus umfassen.
Ausrichtung
Adaptive Apps unterstützen das Hoch- und Querformat unabhängig von der Displaygröße oder dem Fenstermodus.
Die Manifesteinstellung screenOrientation schränkt die Ausrichtung von Aktivitäten ein.
Entfernen Sie die Einstellung screenOrientation aus Ihrem App-Manifest.
Wenn Sie die Ausrichtung von Apps sperren, wird dadurch nicht verhindert, dass sich die Fenstergröße ändert. Apps werden in der Größe angepasst, wenn sie in den Mehrfenstermodus wechseln, wenn ein Gerät zusammen- oder aufgeklappt wird oder wenn die Größe eines Fensters vom Typ „Desktop“ geändert wird. Ihre App muss Änderungen der Fenstergröße unabhängig von der Einstellung des screenOrientation-Attributs unterstützen.
Die Ausrichtung der Aktivität nicht einschränken. Apps, die die Ausrichtung sperren, werden auf Geräten mit großen Displays und in inkompatiblen Fenstergrößen mit Letterboxing dargestellt.
Apps mit Letterboxing sind bei Google Play für Tablets, faltbare Geräte und ChromeOS-Geräte weniger gut sichtbar.
Seitenverhältnis
Da Bildschirm- und Fenstergrößen variieren, variieren auch ihre Seitenverhältnisse – von hoch und schmal über quadratisch bis hin zu kurz und breit.
Mit den Manifesteinstellungen minAspectRatio und maxAspectRatio wird das Seitenverhältnis Ihrer App auf fest codierte Werte beschränkt.
Passen Sie Ihre App an das Display an, unabhängig von den relativen Abmessungen.
Entfernen Sie die Einstellungen minAspectRatio und maxAspectRatio aus dem App-Manifest. Oder sorgen Sie dafür, dass die Größe Ihrer App geändert werden kann. Das Seitenverhältnis wird dann automatisch angepasst (siehe Abschnitt Größenänderung).
Versuchen Sie nicht, die relativen Abmessungen Ihrer App zu steuern. Wenn Ihre App auf einem Bildschirm oder in einem Fenster mit einem Seitenverhältnis ausgeführt wird, das mit dem Seitenverhältnis der App nicht kompatibel ist, wird sie im Letterbox-Format dargestellt.
Unter Android 14 (API-Level 34) und höher können Nutzer das Seitenverhältnis der App überschreiben, um Apps mit Letterboxing so zu maximieren, dass sie den verfügbaren Anzeigebereich ausfüllen. Weitere Informationen zum Gerätekompatibilitätsmodus
Fenstergröße
Die Optimierung von Layouts für verschiedene Displaygrößen ist die zentrale Prämisse des adaptiven Designs. Bei adaptiven Apps wird die Größe des App-Fensters und nicht die Größe des Gerätebildschirms berücksichtigt. Wenn die App im Vollbildmodus angezeigt wird, ist das App-Fenster das Display des Geräts.
Fenstergrößenklassen bieten eine systematische Möglichkeit, die Größe des App-Fensters zu bestimmen und zu kategorisieren. Passen Sie Ihre App an, indem Sie Layouts ändern, wenn sich die Fenstergrößenklasse Ihrer App ändert.
Bewerten Sie die Größe des App-Fensters anhand von Fenstergrößenklassen.
Verwenden Sie die currentWindowAdaptiveInfoV2()-Funktion der obersten Ebene der Compose Material 3 Adaptive-Bibliothek (die die eingestellte currentWindowAdaptiveInfo()-Funktion ersetzt), um die Fenstergrößenklasse zu ermitteln. Weitere Informationen finden Sie unter Adaptive Apps entwickeln.
Ignorieren Sie nicht die Nützlichkeit der Definitionen von Fenstergrößenklassen und der integrierten APIs. Verwenden Sie keine verworfenen APIs, um die Fenstergröße zu berechnen.
Verworfene APIs
Bei älteren Plattform-APIs wird das App-Fenster nicht richtig gemessen. Bei einigen wird der Gerätebildschirm gemessen, bei anderen wird die Systemdekoration ausgeschlossen.
Verwenden Sie WindowManager#getCurrentWindowMetrics() und WindowMetrics#getBounds(), um die Größe des App-Fensters abzurufen. Verwenden Sie WindowMetrics#getDensity(), um die Displaydichte abzurufen.
Verwenden Sie die folgenden eingestellten Display-APIs nicht, um die Fenstergröße zu ermitteln:
getSize(): In Android 11 (API-Level 30) eingestelltgetMetrics(): In Android 11 (API-Level 30) eingestelltgetRealSize(): In Android 12 (API-Level 31) eingestelltgetRealMetrics(): In Android 12 (API-Level 31) eingestellt
Schreiben
Jetpack Compose wurde für die Entwicklung adaptiver Benutzeroberflächen entwickelt. Keine XML-, Layout- oder Ressourcenqualifiziererdateien. Sie verwenden nur zustandslose Composables auf Kotlin-Basis wie Column, Row und Box, die Ihre Benutzeroberfläche beschreiben, sowie Modifier wie offset, padding und size, die UI-Elementen Verhalten hinzufügen.
Mit Compose entwickeln Bleiben Sie über die neuesten Funktionen und Releases auf dem Laufenden.
Verlassen Sie sich nicht auf veraltete Technologie. Lassen Sie Ihre App nicht veralten.
Compose Material 3 Adaptive-Bibliothek
Die Compose Material 3 Adaptive-Bibliothek bietet Komponenten und APIs, die die Entwicklung adaptiver Apps erleichtern.
Verwenden Sie die folgenden APIs, um Ihre App adaptiv zu gestalten:
NavigationSuiteScaffold: Wechselt je nach Fenstergrößenklasse der App zwischen Navigationsleiste und Navigationsbereich.ListDetailPaneScaffold: Implementiert das kanonische Listen-Detailansicht-Layout. Passt das Layout an die Größe des App-Fensters an.SupportingPaneScaffold: Implementiert das kanonische Layout für den unterstützenden Bereich.
Erfinden Sie das Rad nicht neu. Lassen Sie sich die Produktivitätssteigerungen für Entwickler nicht entgehen, die durch alle Jetpack Compose-Bibliotheken ermöglicht werden.
Layouts
Nutzer erwarten, dass Apps den verfügbaren Bildschirmplatz mit zusätzlichen Inhalten oder erweiterten Steuerelementen optimal nutzen.
Adaptive Apps optimieren Layouts basierend auf Änderungen des Displays, insbesondere Änderungen der Größe des App-Fensters oder Änderungen der Geräteposition.
UI-Komponenten ändern, wenn sich die Fenstergröße ändert, um den verfügbaren Anzeigebereich optimal zu nutzen. Tauschen Sie beispielsweise die untere Navigationsleiste, die bei kompakten Fenstergrößen verwendet wird, gegen eine vertikale Navigationsleiste bei mittleren und maximierten Fenstern aus. Dialogfelder werden so positioniert, dass sie auf allen Displays erreichbar sind.
Inhalte in Bereichen organisieren, um Layouts mit mehreren Bereichen wie Listenansicht und unterstützenden Bereich für dynamische Inhalte zu ermöglichen.
Wenn Sie keine Inhaltsbereiche verwenden, sollten Sie UI-Elemente nicht einfach so dehnen, dass sie den verfügbaren Anzeigebereich ausfüllen. Lange Textzeilen sind schwer zu lesen. Gestreckte Schaltflächen sehen schlecht aus. Wenn Sie Modifier.fillMaxWidth verwenden, gehen Sie nicht davon aus, dass dies das richtige Verhalten für alle Displaygrößen ist.
Eingabegeräte
Nutzer interagieren nicht nur über Touchscreens mit Apps.
Adaptive Apps unterstützen externe Tastaturen, Mäuse und Stifte, um die Nutzerfreundlichkeit zu verbessern und Nutzern zu helfen, auf allen Arten von Formfaktoren produktiver zu sein.
Nutzen Sie die integrierten Funktionen des Android-Frameworks für die Tab-Navigation mit der Tastatur sowie für das Klicken, Auswählen und Scrollen mit der Maus oder dem Trackpad. Veröffentlichen Sie die Tastenkombinationen Ihrer App in der Hilfe für Tastenkombinationen.
Verwenden Sie die Jetpack Material 3-Bibliothek, damit Nutzer mit einem Eingabestift in eine beliebige TextField-Komponente schreiben können.
Verhindern Sie nicht alternative Eingabemethoden. Keine Barrierefreiheitsprobleme verursachen.
Zusammenfassung
- App mit Compose und der adaptiven Material 3-Bibliothek erstellen
- Layouts auf Fenstergrößenklassen basieren
- Layouts mit mehreren Bereichen erstellen
- Größe der App anpassen
- Aktivitätsausrichtung nie sperren
- Seitenverhältnis nicht einschränken
- Unterstützung anderer Eingabemethoden als Berührung
- Eingestellte APIs vermeiden
✓ Erfüllen Sie die Erwartungen Ihrer Nutzer: Optimieren Sie Ihre App für die Vielfalt der Geräte, die Menschen täglich verwenden.
✗ Warten Sie nicht. Melden Sie sich noch heute an!