Cosa fare e cosa fare adattivi

Le app adattive supportano display di tutte le dimensioni: l'intero schermo del dispositivo, ridimensionabili finestre in modalità multi-finestra, orientamento verticale e orizzontale, piegato e display aperti di dispositivi pieghevoli.

Un breve elenco di impostazioni di configurazione e API consente di creare modelli app. Tuttavia, alcune impostazioni e API obsolete non sono compatibili con le app adattive e deve essere evitato.

Ridimensionabilità

Le app adattive supportano la ridimensionabilità e la modalità multi-finestra.

L'attributo resizeableActivity di <activity> e Gli elementi manifest <application> attivano o disattivano la modalità multi-finestra su Android 11 (livello API 30) e versioni precedenti. Su Android 12 (livello API 31) e gli schermi più grandi e grandi supportano la modalità multi-finestra indipendentemente . Per ulteriori informazioni, vedi Supportare la modalità multi-finestra.

✓ Azioni consigliate

Consente di attivare l'app per i partecipanti in scenari di multitasking multi-finestra per di aumentare la produttività e la soddisfazione degli utenti.

Imposta il valore resizeableActivity="true" se la tua app ha come target livelli API inferiori a 24. altrimenti lascia stare: su Android 7.0 (per impostazione predefinita, è true) livello 24) e superiori.

✗ Azioni sconsigliate

Non impostare resizeableActivity="false" per nessun livello API. Non escludere la tua app che prevedono la modalità multi-finestra.

Orientamento

Le app adattive supportano l'orientamento verticale e orizzontale indipendentemente dal display o la modalità windowing.

L'impostazione del file manifest screenOrientation limita l'orientamento dell'attività.

✓ Azioni consigliate

Elimina l'impostazione screenOrientation dal file manifest dell'app.

Il blocco dell'orientamento delle app non impedisce le modifiche alle dimensioni della finestra. Le app sono ridimensionati quando viene attivata la modalità multi-finestra, quando il dispositivo viene chiuso o aperto o quando una finestra in formato libero viene ridimensionata. La tua app deve supportare le modifiche nella finestra dimensioni a prescindere dall'impostazione dell'attributo screenOrientation.

✗ Azioni sconsigliate

Non limitare l'orientamento dell'attività. Le app con orientamento di blocco sono formattate in letterbox su dispositivi con schermi grandi e finestre di dimensioni non compatibili.

Le app con formato Letterbox sono soggette a una minore rilevabilità su Google Play per tablet, pieghevoli e dispositivi ChromeOS.

Proporzioni

Le dimensioni dello schermo e delle finestre variano, così come le proporzioni: stretto, quadrato, corto e largo.

Le impostazioni del file manifest minAspectRatio e maxAspectRatio limitano le proporzioni dell'app rispetto ai valori impostati come hardcoded.

✓ Azioni consigliate

Adatta l'app al display indipendentemente dalle dimensioni relative.

Elimina le impostazioni minAspectRatio e maxAspectRatio dalla tua app del file manifest. In alternativa, assicurati che la tua app sia ridimensionabile e che le proporzioni si prendano cura di sé (consulta la sezione Ridimensionabilità).

✗ Azioni sconsigliate

Non provare a controllare le dimensioni relative della tua app. Se la tua app viene eseguita su una sullo schermo o in una finestra con proporzioni incompatibili con proporzioni dell'app, l'app è in formato letterbox.

Su Android 14 (livello API 34) e versioni successive, gli utenti possono sostituire le proporzioni dell'app per espandere le app in formato letterbox e riempire l'area di visualizzazione disponibile. Vedi Dispositivo modalità di compatibilità.

Dimensione schermo

L'ottimizzazione dei layout per le diverse dimensioni dei display è la premessa centrale il design adattivo. Le app adattive si concentrano sulle dimensioni della finestra dell'app anziché sul dispositivo dimensioni dello schermo. Quando l'app è a schermo intero, la finestra dell'app corrisponde allo schermo del dispositivo.

Le classi di dimensioni delle finestre consentono di determinare e categorizzare in modo sistematico le dimensioni della finestra dell'app. Adatta la tua app modificando i layout come finestra delle modifiche alla classe di dimensioni dell'app.

✓ Azioni consigliate

Valuta le dimensioni della finestra dell'app in base alle relative classi.

Per determinare la classe delle dimensioni della finestra, utilizza currentWindowAdaptiveInfo() funzione di primo livello della libreria adattiva Compose Material 3. Per maggiori informazioni per ulteriori informazioni, consulta la sezione Creazione di app adattive.

✗ Azioni sconsigliate

Non ignorare l'utilità delle definizioni delle classi di dimensioni delle finestre e le API integrate. Non utilizzare API deprecate per calcolare la dimensione della finestra.

API deprecate

Le API delle piattaforme precedenti non misurano correttamente la finestra dell'app. alcune misurano schermo del dispositivo, alcune escludono l'arredamento del sistema.

✓ Azioni consigliate

Utilizza WindowManager#getCurrentWindowMetrics() e WindowMetrics#getBounds() per ottenere le dimensioni della finestra dell'app. Utilizza le funzionalità di WindowMetrics#getDensity() per ottenere la densità del display.

✗ Azioni sconsigliate

Non utilizzare le seguenti API Display ritirate per determinare le dimensioni della finestra:

Compose

Jetpack Compose è progettata per lo sviluppo di UI adattive. Nessun XML, nessun layout e nessun qualificatore di risorse. Solo i componibili stateless basati su Kotlin come Column, Row e Box, che descrivono la tua interfaccia utente e i modificatori come offset, padding e size che aggiungono un comportamento all'interfaccia utente elementi.

✓ Azioni consigliate

Crea con Compose. Tieniti al corrente sulle ultime funzionalità e release.

✗ Azioni sconsigliate

Non fare affidamento su tecnologie obsolete. Non permettere che la tua app diventi obsoleta.

Compose libreria adattiva Material 3

La libreria adattiva Compose Material 3 fornisce componenti e API che per facilitare lo sviluppo di app adattive.

✓ Azioni consigliate

Utilizza le seguenti API per rendere la tua app adattiva:

  • NavigationSuiteScaffold: consente di passare dalla barra di navigazione a barra di navigazione a seconda della classe delle dimensioni della finestra dell'app.
  • ListDetailPaneScaffold: implementa il layout canonico elenco-dettagli. Adatta il layout alle dimensioni della finestra dell'app.
  • SupportingPaneScaffold: implementa la versione canonica del riquadro di supporto layout.
✗ Azioni sconsigliate

Perché complicare le cose? Non lasciarti sfuggire gli incrementi di produttività degli sviluppatori forniti da tutte le librerie Jetpack Compose.

Layout

Gli utenti si aspettano che le app sfruttino al meglio lo spazio di visualizzazione disponibile con contenuti o controlli avanzati.

Le app adattive ottimizzano i layout in base ai cambiamenti del display, in particolare variazioni nelle dimensioni della finestra dell'app o nella postura del dispositivo.

✓ Azioni consigliate

Modifica i componenti dell'interfaccia utente quando cambiano le dimensioni della finestra per sfruttare la disponibilità di visualizzazione dei contenuti. Ad esempio, inverti la barra di navigazione inferiore utilizzata per le schede compatte dimensioni delle finestre per una barra di navigazione verticale su finestre medie ed espanse. Riposiziona le finestre di dialogo per renderle raggiungibili su tutti i display.

Organizza i contenuti in riquadri per abilitare layout a più riquadri come elenco dettagli e riquadro di supporto per la visualizzazione dei contenuti dinamici.

✓ Azione: elenca e crea i dettagli delle attività organizzate in un layout a due riquadri.
✗ Azioni sconsigliate

Se non utilizzi i riquadri dei contenuti, non limitarti ad ampliare gli elementi dell'interfaccia utente per riempire di spazio di visualizzazione disponibile. Le lunghe righe di testo sono difficili da leggere. Allungato pulsanti hanno un design mal progettato. Se utilizzi Modifier.fillMaxWidth, non supporre che sia il comportamento corretto per tutte le dimensioni di visualizzazione.

✗ No: layout allungato per riempire la finestra espandibile.

Dispositivi di immissione

Gli utenti non si limitano a utilizzare i touchscreen per interagire con le app.

Le app adattive supportano tastiere, mouse e stilo esterni per fornire un un'esperienza utente migliorata e aiutano gli utenti a essere più produttivi sui fattori di forma di ogni tipo.

✓ Azioni consigliate

Sfrutta le funzionalità integrate del framework Android per navigazione delle schede sulla tastiera e clic con il mouse o sul trackpad, selezione e scorrimento. Pubblica le scorciatoie da tastiera dell'app nell'Assistente scorciatoie da tastiera.

Utilizza la libreria Material 3 di Jetpack per consentire agli utenti di scrivere in qualsiasi TextField utilizzando uno stilo.

✗ Azioni sconsigliate

Non rendere impossibili metodi di immissione alternativi. Non introdurre funzioni di accessibilità che le applicazioni presentino problemi di prestazioni.

Riepilogo

  • Crea la tua app con Compose e la libreria adattiva di Material 3
  • Layout di base sulle classi di dimensioni delle finestre
  • Creare layout a più riquadri
  • Rendere l'app ridimensionabile
  • Non bloccare mai l'orientamento dell'attività
  • Non limitare le proporzioni
  • Input di supporto diverso dal tocco
  • Evita le API deprecate

✓ Fai ciò che gli utenti si aspettano: ottimizzare la tua app per la varietà di dispositivi su cui le persone si affidano ogni giorno.

✗ Non aspettare. Inizia subito.