Adaptive Apps unterstützen Displays aller Größen: den gesamten Gerätebildschirm, veränderbare Fenster im Multifenstermodus, Hoch- und Querformat sowie zusammengeklappte und aufgeklappte Displays von faltbaren Geräten.
Mit einer kurzen Liste von Konfigurationseinstellungen und APIs können Sie adaptive Apps erstellen. Einige veraltete Einstellungen und APIs sind jedoch nicht mit adaptiven Apps kompatibel und müssen vermieden werden.
Größe kann geändert werden
Adaptive Apps unterstützen die Größenänderung von Apps und den Mehrfenstermodus.
Mit dem Attribut resizeableActivity
der Manifestelemente <activity>
und <application>
wird der Multifenstermodus unter Android 11 (API-Level 30) und niedriger aktiviert oder deaktiviert. Unter Android 12 (API-Level 31) und höher unterstützen große Bildschirme den Multifenstermodus unabhängig vom Attribut. Weitere Informationen finden Sie unter Unterstützung des Multifenstermodus.
Aktivieren Sie für Ihre App die Unterstützung von Mehrfenster- und Multitasking-Szenarien, 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 ist das nicht erforderlich, da Android 7.0 (API-Level 24) und höher standardmäßig true
verwendet.
Legen Sie resizeableActivity="false"
für keine API-Ebene fest. Schließen Sie Ihre App nicht von Anwendungsfällen aus, die den Mehrfenstermodus umfassen.
Ausrichtung
Adaptive Apps unterstützen das Hoch- und Querformat unabhängig von der Displaygröße oder dem Fenstermodus.
Mit der Manifesteinstellung screenOrientation
wird die Ausrichtung von Aktivitäten eingeschränkt.
Entfernen Sie die Einstellung screenOrientation
aus Ihrem App-Manifest.
Wenn Sie die Ausrichtung von Apps sperren, wird die Änderung der Fenstergröße nicht verhindert. Die Größe von Apps wird geändert, wenn der Modus „Mehrere Fenster“ aktiviert wird, wenn ein Gerät aufgeklappt oder zugeklappt wird oder wenn die Größe eines Desktopfensters geändert wird. Ihre App muss unabhängig von der Einstellung des screenOrientation
-Attributs Änderungen der Fenstergröße unterstützen.
Beschränken Sie die Ausrichtung der Aktivitäten nicht. Bei Apps, bei denen die Ausrichtung fixiert ist, wird auf Geräten mit großen Bildschirmen und bei inkompatiblen Fenstergrößen ein Letterbox-Effekt verwendet.
Apps mit Letterbox-Effekt sind bei Tablets, faltbaren Geräten und ChromeOS-Geräten bei Google Play weniger 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 Manifest-Einstellungen minAspectRatio
und maxAspectRatio
wird das Seitenverhältnis Ihrer App auf hartcodierte Werte beschränkt.
Ihre App sollte unabhängig von den relativen Abmessungen an das Display angepasst werden.
Entfernen Sie die minAspectRatio
- und maxAspectRatio
-Einstellungen aus Ihrem App-Manifest. Alternativ können Sie dafür sorgen, dass Ihre App skalierbar ist, damit das Seitenverhältnis automatisch angepasst wird (siehe Abschnitt Skalierbar).
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 nicht mit dem Seitenverhältnis der App kompatibel ist, wird Ihre App letterboxed.
Unter Android 14 (API-Level 34) und höher können Nutzer das Seitenverhältnis der App überschreiben, um letterbox-Apps so zu maximieren, dass sie den gesamten verfügbaren Bildschirmbereich ausfüllen. Weitere Informationen finden Sie unter Modus für die Gerätekompatibilität.
Fenstergröße
Die Optimierung von Layouts für unterschiedliche Bildschirmgrößen ist die zentrale Prämisse des responsiven Designs. Bei adaptiven Apps liegt der Fokus auf der App-Fenstergröße und nicht auf der Bildschirmgröße des Geräts. Wenn die App im Vollbildmodus ist, 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 die 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 oberste Funktion currentWindowAdaptiveInfo()
der Compose Material 3 Adaptive-Bibliothek, um die Fenstergrößenklasse zu bestimmen. Weitere Informationen finden Sie unter Adaptive Apps erstellen.
Die Nützlichkeit der Klassendefinitionen für die Fenstergröße und die integrierten APIs sollten Sie nicht außer Acht lassen. Verwenden Sie keine veralteten APIs, um die Fenstergröße zu berechnen.
Eingestellte APIs
Ältere Plattform-APIs messen das App-Fenster nicht korrekt. Einige messen den Gerätebildschirm, andere schließen Systemdekor aus.
Verwende 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 bestimmen:
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 UIs entwickelt. Keine XML-Dateien, keine Layoutdateien, keine Ressourcenqualifizierer. Verwenden Sie nur Kotlin-basierte, zustandslose Compose-Elemente wie Column
, Row
und Box
, um Ihre Benutzeroberfläche zu beschreiben, und Modifikatoren wie offset
, padding
und size
, um UI-Elementen Verhalten hinzuzufügen.
Mit Compose erstellen Bleiben Sie über die neuesten Funktionen und Releases auf dem Laufenden.
Verlassen Sie sich nicht auf veraltete Technologien. Achten Sie darauf, dass Ihre App nicht veraltet.
Material 3 Adaptive Library erstellen
Die Compose Material 3 Adaptive Library bietet Komponenten und APIs, die die Entwicklung adaptiver Apps erleichtern.
Mit den folgenden APIs können Sie Ihre App adaptiv gestalten:
NavigationSuiteScaffold
: Je nach Größe des App-Fensters wechselt die Navigationsleiste zur Navigationsleiste.ListDetailPaneScaffold
: Implementiert das kanonische Layout für Listendetails. Das Layout wird an die Größe des App-Fensters angepasst.SupportingPaneScaffold
: Implementiert das kanonische Layout des Infofelds.
Sie müssen das Rad nicht neu erfinden. Lassen Sie sich die Produktivitätssteigerungen durch die Jetpack Compose-Bibliotheken nicht entgehen.
Layouts
Nutzer erwarten, dass Apps den verfügbaren Bildschirmplatz mit ergänzenden Inhalten oder erweiterten Steuerelementen optimal nutzen.
In adaptiven Apps werden Layouts basierend auf Änderungen am Display optimiert, insbesondere auf Änderungen an der Größe des App-Fensters oder an der Geräteausrichtung.
Ändern Sie die UI-Komponenten, wenn sich die Fenstergröße ändert, um den verfügbaren Bildschirmplatz optimal zu nutzen. Sie können beispielsweise die untere Navigationsleiste, die in kompakten Fenstergrößen verwendet wird, durch eine vertikale Navigationsleiste in mittleren und maximierten Fenstern ersetzen. Positionieren Sie Dialogfelder so, dass sie auf allen Bildschirmen erreichbar sind.
Sie können Inhalte in Bereiche unterteilen, um Layouts mit mehreren Bereichen zu ermöglichen, z. B. einen Listenbereich mit einem Detailbereich für dynamische Inhalte.
Wenn Sie keine Inhaltsbereiche verwenden, sollten Sie die UI-Elemente nicht einfach so strecken, dass sie den gesamten verfügbaren Bildschirmbereich ausfüllen. Lange Textzeilen sind schwer zu lesen. Gestreckte Schaltflächen wirken schlecht gestaltet. Wenn Sie Modifier.fillMaxWidth
verwenden, sollten Sie nicht davon ausgehen, dass dies für alle Bildschirmgrößen das richtige Verhalten ist.
Eingabegeräte
Nutzer verwenden nicht nur Touchscreens, um mit Apps zu interagieren.
Adaptive Apps unterstützen externe Tastaturen, Mäuse und Eingabestifte, 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 Tastaturnavigation und das Klicken, Auswählen und Scrollen mit der Maus oder dem Touchpad. Veröffentlichen Sie die Tastenkombinationen Ihrer App in der Hilfe zu Tastenkombinationen.
Mit der Material 3-Bibliothek von Jetpack können Nutzer mit einem Eingabestift in jede TextField
-Komponente schreiben.
Alternative Eingabemethoden dürfen nicht unmöglich gemacht werden. Sie dürfen keine Probleme mit der Barrierefreiheit verursachen.
Zusammenfassung
- App mit Compose und der Material 3 Adaptive Library erstellen
- Layouts an Fenstergrößenklassen ausrichten
- Layouts mit mehreren Ansichten erstellen
- App skalierbar machen
- Ausrichtung der Aktivität nie sperren
- Seitenverhältnis nicht einschränken
- Unterstützung anderer Eingabemethoden als Touchbedienung
- Veraltete APIs vermeiden
✓ Erfüllen Sie die Erwartungen Ihrer Nutzer: Optimieren Sie Ihre App für die Vielfalt der Geräte, die Nutzer täglich verwenden.
✗ Warten Sie nicht. Jetzt loslegen