Adaptive Apps unterstützen Displays aller Größen: den gesamten Gerätebildschirm, Fenster mit anpassbarer Größe im Mehrfenstermodus, Hoch- und Querformat sowie gefaltete und aufgeklappte Displays faltbarer Geräte.
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 sollten vermieden werden.
Größenanpassung
Adaptive Apps unterstützen die Größenanpassung von Apps und den Mehrfenstermodus.
Mit dem resizeableActivity Attribut der <activity> und
<application> Manifestelemente kann der Mehrfenster
modus unter Android 11 (API‑Level 30) und niedriger aktiviert oder deaktiviert werden. Unter Android 12 (API‑Level 31) und höher wird der Mehrfenstermodus auf großen Bildschirmen unabhängig vom Attribut unterstützt. Weitere Informationen finden Sie unter Mehrfenstermodus unterstützen.
Ermöglichen Sie Ihrer App, an Mehrfenster- und Multitasking-Szenarien teilzunehmen, um die Produktivität und Zufriedenheit der Nutzer zu steigern.
Legen Sie resizeableActivity="true" fest, wenn Ihre App auf API‑Level unter 24 ausgerichtet ist. Andernfalls ist das nicht erforderlich, da der Wert 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 Mehrfenstermodus umfassen.
Ausrichtung
Adaptive Apps unterstützen das Hoch- und Querformat unabhängig von der Displaygröße oder dem Fenstermodus.
Mit der screenOrientation Manifesteinstellung wird die Ausrichtung der Aktivität eingeschränkt.
Entfernen Sie die Einstellung screenOrientation aus dem App-Manifest.
Durch das Sperren der Ausrichtung von Apps werden Änderungen der Fenstergröße nicht verhindert. Die Größe von Apps wird geändert, wenn sie in den Mehrfenstermodus wechseln, wenn ein Gerät gefaltet oder aufgeklappt wird oder wenn die Größe eines Desktopfensters geändert wird. Ihre App muss Änderungen der Fenstergröße unabhängig von der Einstellung des Attributs screenOrientation unterstützen.
Schränken Sie die Ausrichtung der Aktivität nicht ein. Apps, bei denen die Ausrichtung gesperrt ist, werden auf Geräten mit großen Bildschirmen und inkompatiblen Fenstergrößen mit Letterboxing angezeigt.
Apps mit Letterboxing werden bei Google Play für Tablets, faltbare Geräte und ChromeOS-Geräte weniger häufig gefunden.
Seitenverhältnis
Da sich die Bildschirm- und Fenstergrößen unterscheiden, variieren auch ihre Seitenverhältnisse – von hoch und schmal über quadratisch bis 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 angepasst werden kann. Das Seitenverhältnis wird dann automatisch angepasst
(siehe Abschnitt Größenanpassung).
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 die App mit Letterboxing angezeigt.
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 finden Sie unter Geräte kompatibilitätsmodus.
Fenstergröße
Das Optimieren von Layouts für verschiedene Displaygrößen ist die zentrale Voraussetzung für adaptives Design. Bei adaptiven Apps wird die Fenstergröße der App und nicht die Bildschirmgröße des Geräts berücksichtigt. Wenn die App im Vollbildmodus ausgeführt wird, entspricht das App-Fenster dem Gerätebildschirm.
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 Fenstergröße Ihrer App anhand von Fenstergrößenklassen.
Verwenden Sie die currentWindowAdaptiveInfo()
Funktion der obersten Ebene der adaptiven Bibliothek von Compose Material 3, um die Fenstergrößenklasse zu bestimmen. Weitere
Informationen finden Sie unter Adaptive Apps erstellen.
Ignorieren Sie nicht die Vorteile der Definitionen von Fenstergrößenklassen und der integrierten APIs. Verwenden Sie keine veralteten APIs, um die Fenstergröße zu berechnen.
Veraltete APIs
Ältere Plattform-APIs messen das App-Fenster nicht korrekt. Einige messen den Gerätebildschirm, andere schließen die Systemdekoration aus.
Verwenden Sie WindowManager#getCurrentWindowMetrics() und
WindowMetrics#getBounds(), um die Größe des App-Fensters abzurufen. Verwenden Sie
WindowMetrics#getDensity(), um die Anzeigedichte abzurufen.
Verwenden Sie die folgenden veralteten Display-APIs nicht, um die Fenstergröße zu bestimmen:
getSize(): Veraltet unter Android 11 (API‑Level 30)getMetrics(): Veraltet unter Android 11 (API‑Level 30)getRealSize(): Veraltet unter Android 12 (API‑Level 31)getRealMetrics(): Veraltet unter Android 12 (API‑Level 31)
Compose
Jetpack Compose wurde für die Entwicklung adaptiver Benutzeroberflächen entwickelt. Kein XML, keine Layoutdateien, keine Ressourcenqualifizierer. Nur zustandslose, auf Kotlin basierende Composables
wie Column, Row und Box, die Ihre Benutzeroberfläche beschreiben, und Modifikatoren
wie offset, padding und size, die UI
Elementen Verhalten hinzufügen.
Entwickeln Sie mit Compose. Bleiben Sie über die neuesten Funktionen und Releases auf dem Laufenden.
Verlassen Sie sich nicht auf veraltete Technologien. Sorgen Sie dafür, dass Ihre App nicht veraltet.
Adaptive Bibliothek von Compose Material 3
Die adaptive Bibliothek von Compose Material 3 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 Layout für Liste und Details. Passt das Layout an die Fenstergröße der App an.SupportingPaneScaffold: Implementiert das kanonische Layout für den unterstützenden Bereich.
Sie müssen das Rad nicht neu erfinden. Nutzen Sie die Vorteile der Produktivitätssteigerung für Entwickler, die alle Jetpack Compose-Bibliotheken bieten.
Layouts
Nutzer erwarten, dass Apps den verfügbaren Anzeigebereich mit zusätzlichen Inhalten oder erweiterten Steuerelementen optimal nutzen.
Adaptive Apps optimieren Layouts basierend auf Änderungen des Displays, insbesondere Änderungen der Fenstergröße der App oder der Geräteausrichtung.
Ändern Sie UI‑Komponenten, wenn sich die Fenstergröße ändert, um den verfügbaren Anzeigebereich zu nutzen. Ersetzen Sie beispielsweise die untere Navigationsleiste, die bei kompakten Fenstergrößen verwendet wird, durch einen vertikalen Navigationsbereich in mittelgroßen und maximierten Fenstern. Positionieren Sie Dialogfelder so, dass sie auf allen Displays erreichbar sind.
Organisieren Sie Inhalte in Bereichen, um Layouts mit mehreren Bereichen wie Liste und Details sowie unterstützende Bereiche für dynamische Inhaltsanzeigen zu ermöglichen.
Wenn Sie keine Inhaltsbereiche verwenden, dehnen Sie UI‑Elemente nicht einfach, um den verfügbaren Anzeigebereich auszufüllen. Lange Textzeilen sind schwer zu lesen. Gedehnte Schaltflächen sehen schlecht gestaltet aus. Wenn Sie Modifier.fillMaxWidth verwenden, gehen Sie nicht
davon aus, dass dies für alle Displaygröß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 Geräten produktiver zu sein.
Nutzen Sie die integrierte Funktionalität des Android-Frameworks für die Tab-Navigation auf der Tastatur und das Klicken, Auswählen und Scrollen mit der Maus oder dem Trackpad. Veröffentlichen Sie die Tastenkombinationen Ihrer App in der Hilfe zu Tastenkombinationen.
Verwenden Sie die Jetpack Material 3-Bibliothek, um Nutzern zu ermöglichen, mit einem Eingabestift in jede
TextField-Komponente zu schreiben.
Verhindern Sie nicht die Verwendung alternativer Eingabemethoden. Führen Sie keine Probleme mit der Barrierefreiheit ein.
Zusammenfassung
- Erstellen Sie Ihre App mit Compose und der adaptiven Bibliothek von Material 3.
- Basieren Sie Layouts auf Fenstergrößenklassen.
- Erstellen Sie Layouts mit mehreren Bereichen.
- Sorgen Sie dafür, dass die Größe Ihrer App angepasst werden kann.
- Sperren Sie die Ausrichtung der Aktivität niemals.
- Schränken Sie das Seitenverhältnis nicht ein.
- Unterstützen Sie andere Eingabemethoden als Touch.
- Vermeiden Sie veraltete APIs.
✓ Erfüllen Sie die Erwartungen Ihrer Nutzer: Optimieren Sie Ihre App für die Vielfalt der Geräte, auf die sich Nutzer täglich verlassen.
✗ Warten Sie nicht. Starten Sie noch heute!