Orientamento, proporzioni e ridimensionamento delle app

Le app per Android vengono eseguite su dispositivi di ogni tipo: smartphone, tablet, pieghevoli, dispositivi ChromeOS, auto, TV e persino XR. Per adattarsi a questo ambiente variegato, la tua app deve supportare tutti i fattori di forma dei dispositivi e le dimensioni del display.

Android 16 (livello API 36) consente alle app di adattarsi a diversi fattori di forma e dimensioni di visualizzazione ignorando le limitazioni delle app per l'orientamento dello schermo, le proporzioni e il ridimensionamento. Gli override si applicano ai dispositivi con larghezza minima >= 600 dp, che definisce quanto segue:

  • Tablet
  • Display interni dei dispositivi pieghevoli con schermo di grandi dimensioni
  • Finestre delle app (su tutti i fattori di forma)

Le app che hanno come target il livello API 36 sono ridimensionabili e possono entrare in modalità multi-finestra (equivalente a resizeableActivity="true") se la larghezza più piccola del display è >= 600 dp.

L'app viene visualizzata in modalità letterbox su un dispositivo con schermo di grandi dimensioni aperto prima di Android 16, ma a schermo intero se ha come target Android 16. L'app mostra più notizie a schermo intero anziché in formato letterbox.
Figura 1. Il feed Notizie per sviluppatori, precedentemente letterbox sui dispositivi con schermi di grandi dimensioni (a sinistra), viene eseguito a schermo intero quando ha come target Android 16 (a destra).

Android 16 applica un modello coerente di progettazione di app adattive che ottimizza l'esperienza utente rispettando le preferenze dell'utente per l'orientamento del dispositivo, le proporzioni e le dimensioni del display.

Modifiche

I seguenti attributi del manifest e API vengono ignorati per le app destinate ad Android 16 (livello API 36) su schermi di grandi dimensioni:

Attributo o API Valori ignorati
screenOrientation portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape
resizeableActivity tutti
minAspectRatio tutti
maxAspectRatio tutti
setRequestedOrientation()

getRequestedOrientation()
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape

Eccezioni

Le eccezioni alle modifiche di Android 16 includono quanto segue:

  • Display più piccoli di sw600dp (la maggior parte degli smartphone, dei dispositivi pieghevoli e dei display esterni dei dispositivi pieghevoli con schermo grande)

  • Giochi basati sulla bandiera android:appCategory

    Pubblica il tuo gioco utilizzando Android App Bundle e la firma dell'app di Google Play, consentendo a Google Play di gestire il flag e fornire automaticamente i vantaggi degli app bundle. Vedi anche Panoramica del manifest dell'app.

  • Consenso dell'utente al comportamento predefinito dell'app nelle impostazioni delle proporzioni

Disattiva

Per disattivare il comportamento del livello API 36, dichiara la proprietà manifestPROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY.

Per disattivare un'attività specifica, imposta la proprietà nell'elemento <activity>:

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

Per disattivare la funzionalità per l'intera app, imposta la proprietà nell'elemento <application>:

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

Test

Per verificare se la tua app è interessata dalle modifiche di Android 16, utilizza gli emulatori delle serie Pixel Tablet e Pixel Fold in Android Studio e imposta targetSdkPreview = "Baklava" nel file build.gradle del modulo dell'app.

In alternativa, utilizza il framework di compatibilità delle app sui tuoi dispositivi di test attivando il flag UNIVERSAL_RESIZABLE_BY_DEFAULT (vedi Strumenti del framework di compatibilità).

Puoi automatizzare i test con il framework di test Espresso e le API di test di Jetpack Compose.

Problemi comuni

Le app che limitano l'orientamento del dispositivo, le proporzioni o il ridimensionamento dell'app potrebbero avere problemi di visualizzazione su Android 16, ad esempio layout sovrapposti.

Per offrire un'esperienza utente ottimale su smartphone, pieghevoli, tablet, dispositivi ChromeOS, display per auto e XR, crea la tua app in modo che sia reattiva e adattabile:

  • Evita i componenti UI allungati: i layout progettati per gli schermi degli smartphone standard in formato verticale probabilmente non si adattano ad altri formati. Ad esempio, gli elementi dell'interfaccia utente che riempiono l'intera larghezza del display appariranno allungati in orientamento orizzontale. Aggiungi una larghezza massima ai componenti per evitare lo stretching.

  • Attiva lo scorrimento dei layout:se i layout non scorrono, gli utenti potrebbero non riuscire ad accedere ai pulsanti o ad altri elementi dell'interfaccia utente che non sono visibili sullo schermo in orientamento orizzontale. Attiva lo scorrimento dei layout delle app per garantire che tutti i contenuti siano raggiungibili indipendentemente dall'altezza del display.

  • Garantisci la compatibilità della videocamera in verticale e orizzontale: le anteprime del mirino della videocamera che presuppongono un orientamento e proporzioni specifici rispetto al sensore della videocamera possono comportare anteprime allungate o capovolte su display non conformi. Assicurati che i mirini ruotino correttamente con i cambiamenti di orientamento. Consenti ai mirini di adattarsi alle proporzioni dell'interfaccia utente diverse da quelle del sensore.

  • Preserva lo stato durante le modifiche alle dimensioni della finestra:la rimozione delle limitazioni di orientamento e proporzioni può comportare frequenti modifiche alle dimensioni della finestra dell'app in base alle preferenze di utilizzo di un'app da parte degli utenti, ad esempio ruotando, piegando o aprendo un dispositivo o ridimensionando un'app in modalità multi-finestra o finestre delle app. Le modifiche alla configurazione, come i cambiamenti di orientamento e il ridimensionamento della finestra, causano la ricreazione dell'attività (per impostazione predefinita). Per garantire un'esperienza utente ottimale, conserva lo stato dell'app durante le modifiche alla configurazione in modo che l'app mantenga i dati (ad esempio l'input del modulo) e gli utenti possano mantenere il contesto.

  • Utilizza le classi di dimensioni della finestra:supporta diverse dimensioni della finestra e proporzioni senza personalizzazioni specifiche per il dispositivo. Supponi che le dimensioni delle finestre cambieranno di frequente. Utilizza le classi di dimensioni della finestra per caratterizzare le dimensioni della finestra e poi applica un layout adattivo appropriato.

  • Crea layout adattabili: all'interno delle classi di dimensioni delle finestre, i layout adattabili si adattano alle modifiche delle dimensioni del display per creare sempre una presentazione ottimale dell'app.

Spostamenti

  • Android 16 (2025): il supporto di tutti gli orientamenti e i formati e il ridimensionamento delle app è l'esperienza di base per i dispositivi con schermi di grandi dimensioni (larghezza dello schermo più piccola >= 600 dp) per le app che hanno come target il livello API 36. Tuttavia, gli sviluppatori possono disattivare questa opzione.

  • Rilascio di Android nel 2026: il supporto di tutti gli orientamenti e i formati e la ridimensionabilità delle app saranno l'esperienza di base per i dispositivi con schermi di grandi dimensioni (larghezza dello schermo più piccola >= 600 dp) per le app che hanno come target il livello API 37. Gli sviluppatori non avranno la possibilità di disattivare questa funzionalità.

Livello API target Dispositivi applicabili Disattivazione per gli sviluppatori consentita
36 (Android 16) Dispositivi con schermo grande (larghezza dello schermo più piccola >= 600 dp)
37 (previsto) Dispositivi con schermo grande (larghezza dello schermo più piccola >= 600 dp) No

Le scadenze per il targeting di livelli API specifici sono specifiche per lo store. Google Play richiederà alle app di avere come target il livello API 36 a partire da agosto 2026 e il livello API 37 a partire da agosto 2027.

Risorse aggiuntive