Produktneuigkeiten

App auf die Änderungen bei der Größenänderung und Ausrichtung in Android 17 vorbereiten

Lesezeit: 6 Minuten
Profil von Miguel Montemayor ansehen
Miguel Montemayor Developer Relations Engineer

Mit der Veröffentlichung von Android 16 im Jahr 2025 haben wir unsere Vision eines Geräte-Ökosystems vorgestellt, in dem sich Apps nahtlos an jeden Bildschirm anpassen – egal, ob Smartphone, Foldable, Tablet, Desktop, Autodisplay oder XR. Nutzer erwarten, dass ihre Apps überall funktionieren. Egal, ob sie auf einem Tablet Multitasking betreiben, ein Gerät aufklappen, um bequem zu lesen, oder Apps in einer Desktop-Freiform-Fenster-Umgebung ausführen – Nutzer erwarten, dass die Benutzeroberfläche den verfügbaren Bildschirmbereich ausfüllt und sich an die Geräteausrichtung anpasst.

Wir haben wichtige Änderungen an den APIs für die Ausrichtung und Größenänderung vorgenommen, um ein adaptives Verhalten zu ermöglichen. Gleichzeitig haben wir eine vorübergehende Deaktivierungsmöglichkeit eingeführt, um Ihnen die Umstellung zu erleichtern. Viele Entwickler haben sich bereits erfolgreich an diese Umstellung angepasst, wenn sie das Ziel-API-Level 36 verwenden.

Mit der Veröffentlichung der Android 17 Beta gehen wir nun in die nächste Phase unserer Roadmap für adaptive Layouts über: In Android 17 (API-Level 37) wird die Möglichkeit für Entwickler entfernt, die Einschränkungen für die Ausrichtung und Größenänderung auf Geräten mit großen Displays (sw > 600 dp) zu deaktivieren. Wenn Sie Ihre App auf API-Level 37 ausrichten, muss sie sich an verschiedene Displaygrößen anpassen können.

Die Verhaltensänderungen sorgen dafür, dass das Android-Ökosystem auf allen Geräteformfaktoren eine einheitliche, hochwertige Nutzererfahrung bietet.

Was ändert sich in Android 17?

Apps, die auf Android 17 ausgerichtet sind, müssen mit der Einstellung von Manifestattributen und Laufzeit-APIs kompatibel sein, die in Android 16 eingeführt wurden. Uns ist bewusst, dass dies für einige Apps eine große Umstellung sein kann. Deshalb haben wir weiter unten in diesem Blogpost Best Practices und Tools zusammengestellt, mit denen sich häufige Probleme vermeiden lassen.

Seit Android 16 wurden keine neuen Änderungen eingeführt, aber die Deaktivierung durch Entwickler ist nicht mehr möglich. Zur Erinnerung: Wenn deine App auf einem großen Display ausgeführt wird, wobei großes Display bedeutet, dass die kleinere Abmessung des Displays mindestens 600 dp beträgt, werden die folgenden Manifestattribute und APIs ignoriert:

Hinweis : Wie bereits für Android 16 erwähnt, gelten diese Änderungen nicht für Bildschirme, die kleiner als sw 600 dp sind, oder für Apps, die basierend auf dem Flag android:appCategory als Spiele kategorisiert sind. 

Manifestattribute/APIIgnorierte Werte
screenOrientationportrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivityAlle
minAspectRatioAlle
maxAspectRatioAlle

Außerdem behalten die Nutzer die Kontrolle. In den Einstellungen für das Seitenverhältnis können Nutzer explizit festlegen, dass das von der App angeforderte Verhalten verwendet werden soll.

App vorbereiten

Apps müssen Quer- und Hochformatlayouts für Displaygrößen in allen Seitenverhältnissen unterstützen, in denen Nutzer Apps verwenden können, einschließlich anpassbarer Fenster. Es wird nicht mehr möglich sein, das Seitenverhältnis und die Ausrichtung auf Hoch- oder Querformat zu beschränken.

App testen

Als Erstes sollten Sie Ihre App mit diesen Änderungen testen, um sicherzustellen, dass sie auf allen Displaygrößen gut funktioniert.

Verwenden Sie Android 17 Beta 1 mit den Emulatoren für das Pixel Tablet und die Pixel Fold-Serie in Android Studio und legen Sie die targetSdkPreview = “CinnamonBun” fest. Alternativ können Sie das Framework für App-Kompatibilität verwenden, indem Sie das Flag UNIVERSAL_RESIZABLE_BY_DEFAULT aktivieren, wenn Ihre App noch nicht auf API-Level 36 ausgerichtet ist.

Wir haben zusätzliche Tools, mit denen Sie dafür sorgen können, dass Ihre Layouts richtig angepasst werden. Mit der Compose UI-Prüfung können Sie Ihre Benutzeroberfläche automatisch prüfen und Vorschläge erhalten, wie Sie sie anpassungsfähiger gestalten können. Mit DeviceConfigurationOverride können Sie in Ihren Tests bestimmte Displayeigenschaften simulieren.

Bei Apps, die bisher die Ausrichtung und das Seitenverhältnis eingeschränkt haben, treten häufig Probleme mit verzerrten oder falsch ausgerichteten Kameravorschauen, gestreckten Layouts, unzugänglichen Schaltflächen oder dem Verlust des Nutzerstatus bei Konfigurationsänderungen auf. 

Sehen wir uns einige Strategien zur Behebung dieser häufigen Probleme an.

Kompatibilität der Kamera prüfen

Ein häufiges Problem bei faltbaren Geräten im Querformat oder bei der Berechnung des Seitenverhältnisses in Szenarien wie dem Mehrfenstermodus, dem Desktop-Freiform-Fenster oder verbundenen Displays ist, dass die Kameravorschau gestreckt, gedreht oder zugeschnitten angezeigt wird.

camera_preview_issue.png

Achte darauf, dass die Kameravorschau nicht gestreckt oder gedreht ist.

Dieses Problem tritt häufig auf Geräten mit großem Display und faltbaren Geräten auf, weil Apps von festen Beziehungen zwischen Kamerafunktionen (z. B. Seitenverhältnis und Sensorausrichtung) und Gerätefunktionen (z. B. Geräteausrichtung und natürliche Ausrichtung) ausgehen.

Damit sich die Kameravorschau an jede Fenstergröße und -ausrichtung anpasst, gibt es vier Lösungen:

Lösung 1: Jetpack CameraX (bevorzugt) 

Die einfachste und robusteste Lösung ist die Verwendung der Jetpack CameraX-Bibliothek. Das UI-Element PreviewView ist so konzipiert, dass alle komplexen Vorschauvorgänge automatisch verarbeitet werden:

  • PreviewView passt die Sensorausrichtung, die Gerätedrehung und die Skalierung korrekt an.
  • „PreviewView“ behält das Seitenverhältnis des Kamerabilds bei, in der Regel durch Zentrieren und Zuschneiden (FILL_CENTER).
  • Du kannst den Skalierungstyp auf FIT_CENTER festlegen, um die Vorschau bei Bedarf im Letterbox-Format anzuzeigen.

Weitere Informationen finden Sie in der CameraX-Dokumentation unter Vorschau implementieren.

Lösung 2: CameraViewfinder 

Wenn Sie eine vorhandene Camera2-Codebasis verwenden, ist die CameraViewfinder-Bibliothek (abwärtskompatibel bis API-Level 21) eine weitere moderne Lösung. Sie vereinfacht die Anzeige des Kamerafeeds, indem sie ein TextureView oder SurfaceView verwendet und alle erforderlichen Transformationen (Seitenverhältnis, Skalierung und Drehung) für Sie anwendet.

Weitere Informationen finden Sie im Blogpost Introducing Camera Viewfinder und im Entwicklerleitfaden Kameravorschau.

Lösung 3: Manuelle Camera2-Implementierung 

Wenn du CameraX oder CameraViewfinder nicht verwenden kannst, musst du die Ausrichtung und das Seitenverhältnis manuell berechnen und dafür sorgen, dass die Berechnungen bei jeder Konfigurationsänderung aktualisiert werden:

  • Rufe die Ausrichtung des Kamerasensors (z. B. 0, 90, 180, 270 Grad) von CameraCharacteristics ab.
  • Aktuelle Bildschirmausrichtung des Geräts abrufen (z. B. 0, 90, 180, 270 Grad)
  • Verwenden Sie die Werte für die Ausrichtung des Kamerasensors und die Displaydrehung, um die erforderlichen Transformationen für Ihr SurfaceView oder TextureView zu bestimmen.
  • Achte darauf, dass das Seitenverhältnis der Ausgabe Surface mit dem Seitenverhältnis der Kameravorschau übereinstimmt, um Verzerrungen zu vermeiden.

Wichtig:Die Kamera-App wird möglicherweise nur in einem Teil des Bildschirms ausgeführt, entweder im Mehrfenstermodus oder Desktop-Freiform-Fenster-Modus oder auf einem verbundenen Display. Aus diesem Grund sollte die Bildschirmgröße nicht zur Bestimmung der Abmessungen des Kamerasuchers verwendet werden. Verwende stattdessen Fenstermesswerte. Andernfalls riskieren Sie eine gestreckte Kameravorschau.

Weitere Informationen findest du im Entwicklerleitfaden Kameravorschau und im Video Deine Kamera-App auf verschiedenen Formfaktoren.

Lösung 4: Grundlegende Kameraaktionen mit einem Intent ausführen 

Wenn Sie nicht viele Kamerafunktionen benötigen, können Sie grundlegende Kameraaktionen wie das Aufnehmen eines Fotos oder Videos mit der Standard-Kamera-App des Geräts ausführen. In diesem Fall können Sie einfach einen Intent verwenden, anstatt eine Kamerabibliothek einzubinden. Das erleichtert die Wartung und Anpassung. 

Weitere Informationen finden Sie unter Kamera-Intents.

Gestreckte Benutzeroberflächen oder unzugängliche Schaltflächen vermeiden

Wenn deine App eine bestimmte Geräteausrichtung oder ein bestimmtes Seitenverhältnis des Displays voraussetzt, kann es zu Problemen kommen, wenn sie jetzt in verschiedenen Ausrichtungen oder Fenstergrößen verwendet wird.

elementsLS.png

Achte darauf, dass Schaltflächen, Textfelder und andere Elemente auf großen Bildschirmen nicht gestreckt werden.

Möglicherweise haben Sie Schaltflächen, Textfelder und Karten auf fillMaxWidth oder match_parent festgelegt.  Auf einem Smartphone sieht das toll aus. Auf einem Tablet oder faltbaren Gerät im Querformat werden die UI-Elemente jedoch über das gesamte große Display gestreckt. In Jetpack Compose können Sie mit dem Modifikator „widthIn“ eine maximale Breite für Komponenten festlegen, um zu verhindern, dass Inhalte gestreckt werden:

Box(
    contentAlignment = Alignment.Center,
    modifier = Modifier.fillMaxSize()
) {
    Column(
        modifier = Modifier
            .widthIn(max = 300.dp) // Prevents stretching beyond 300dp
            .fillMaxWidth()        // Fills width up to 300dp
            .padding(16.dp)
    ) {
        // Your content
    }
}

Wenn ein Nutzer Ihre App im Querformat auf einem faltbaren Gerät oder Tablet öffnet, werden Aktionsschaltflächen wie Speichern oder Anmelden am unteren Bildschirmrand möglicherweise außerhalb des Bildschirms gerendert. Wenn der Container nicht scrollbar ist, kann der Nutzer möglicherweise nicht fortfahren. In Jetpack Compose können Sie Ihrer Komponente den Modifikator verticalScroll hinzufügen:

Column(
    modifier = Modifier
        .fillMaxSize()
        .verticalScroll(rememberScrollState())
        .padding(16.dp)
)

Durch die Kombination von Einschränkungen für die maximale Breite mit vertikalem Scrollen bleibt Ihre App funktional und nutzbar, unabhängig davon, wie breit oder kurz das App-Fenster wird.

Weitere Informationen finden Sie in unserem Leitfaden zum Erstellen adaptiver Layouts.

Zustand bei Konfigurationsänderungen beibehalten

Wenn Sie die Einschränkungen für die Ausrichtung und das Seitenverhältnis entfernen, ändert sich die Fenstergröße Ihrer App viel häufiger. Nutzer können ihr Gerät drehen, es zusammen- oder aufklappen oder die Größe Ihrer App im Splitscreen- oder Desktop-Freiform-Fenstermodus dynamisch anpassen.

Standardmäßig wird die Aktivität durch diese Konfigurationsänderungen gelöscht und neu erstellt. Wenn Ihre App dieses Lifecycle-Event nicht richtig verarbeitet, kann das für Nutzer frustrierend sein: Scrollpositionen werden auf den Anfang zurückgesetzt, halb ausgefüllte Formulare werden gelöscht und der Navigationsverlauf geht verloren. Damit die App nahtlos angepasst werden kann, muss sie den Status bei diesen Konfigurationsänderungen beibehalten. Mit Jetpack Compose können Sie die Neuerstellung deaktivieren und stattdessen zulassen, dass Änderungen der Fenstergröße die Benutzeroberfläche neu zusammensetzen, um den neuen verfügbaren Platz widerzuspiegeln.

Weitere Informationen findest du in unserem Leitfaden zum Speichern des UI-Status.

Ziel-API-Level 37 bis August 2027

Wenn Sie diese Änderungen zuvor für Ihre App deaktiviert haben, als sie auf API-Level 36 ausgerichtet war, ist Ihre App erst dann von der Entfernung der Deaktivierungsoption in Android 17 betroffen, wenn sie auf API-Level 37 ausgerichtet ist. Damit Sie vorausschauend planen und die erforderlichen Anpassungen an Ihrer App vornehmen können, finden Sie hier den Zeitplan für das Inkrafttreten dieser Änderungen:

  • Android 17: Die oben beschriebenen Änderungen sind die Standardeinstellungen für Geräte mit großen Bildschirmen (kleinste Bildschirmbreite > 600 dp) für Apps, die auf API-Level 37 ausgerichtet sind. Entwickler können die Funktion nicht deaktivieren.

Die Fristen für die Ausrichtung auf ein bestimmtes API-Level sind App-Shop-spezifisch. Bei Google Play müssen neue Apps und Updates auf das API-Level 37 ausgerichtet sein. Dieses Verhalten ist ab August 2027 für die Bereitstellung obligatorisch.

Vorbereitung auf Android 17

Eine Liste aller Änderungen, die sich auf Apps in Android 17 auswirken, finden Sie auf der Seite Änderungen in Android 17. Wenn du deine App testen möchtest, lade Android 17 Beta 1 herunter und aktualisiere auf targetSdkPreview = “CinnamonBun” oder verwende das Framework für App-Kompatibilität, um bestimmte Änderungen zu aktivieren.

Die Zukunft von Android ist adaptiv und wir sind hier, um Sie dabei zu unterstützen. Zur Vorbereitung auf Android 17 empfehlen wir Ihnen, unsere Leitfäden zum Erstellen adaptiver Layouts und unsere Qualitätsrichtlinien für große Displays zu lesen. Diese Ressourcen sollen Ihnen helfen, mehrere Formfaktoren und Fenstergrößen sicher zu handhaben.

Verschwende keine Zeit. Bereiten Sie sich schon heute auf Android 17 vor.

Verfasst von:
Weiterlesen