I layout canonici sono layout comprovati e versatili che offrono un'esperienza utente ottimale su una serie di fattori di forma.
I layout canonici supportano smartphone con schermi piccoli, nonché tablet, dispositivi pieghevoli e ChromeOS. Derivati dalle linee guida di Material Design, i layout sono estetici e funzionali.
Il framework Android include componenti specializzati che semplificano e rendono affidabile l'implementazione dei layout.
I layout canonici creano UI coinvolgenti e che migliorano la produttività, che costituiscono la base di app di alta qualità.
Se hai già familiarità con i layout canonici delle app adattive, ma non individuare le API Android da utilizzare, passa alla sezione Applicabilità per determinare il layout adatto ai casi d'uso della tua app.
List-detail
Il layout elenco dei dettagli consente agli utenti di esplorare elenchi di elementi che contengono informazioni descrittive, esplicative o altre informazioni supplementari, ovvero i dettagli dell'elemento.
Il layout suddivide la finestra dell'app in due riquadri affiancati: uno per l'elenco e uno per i dettagli. Gli utenti selezionano gli elementi dall'elenco per visualizzarne i dettagli. I link diretti nei dettagli rivelano contenuti aggiuntivi nel riquadro dei dettagli.
Le visualizzazioni a larghezza estesa (consulta Utilizzare le classi di dimensioni delle finestre) consentono di inserire contemporaneamente sia l'elenco che i dettagli. La selezione di un elemento dell'elenco aggiorna il riquadro dei dettagli per mostrare i contenuti correlati all'elemento selezionato.
I display di larghezza media e compatta mostrano l'elenco o i dettagli, a seconda dell'interazione dell'utente con l'app. Quando è visibile solo l'elenco, la selezione di un elemento dell'elenco mostra il dettaglio al posto dell'elenco. Quando è visibile solo il dettaglio, premendo il pulsante Indietro viene visualizzato di nuovo l'elenco.
Le modifiche alla configurazione, ad esempio le modifiche all'orientamento del dispositivo o alle dimensioni della finestra dell'app, possono modificare la classe delle dimensioni della finestra del display. Un layout elenco-dettagli risponde di conseguenza, preservando lo stato dell'app:
- Se una visualizzazione con larghezza espansa che mostra sia i riquadri dell'elenco sia quelli dei dettagli si restringe a media o compatta, il riquadro dei dettagli rimane visibile e il riquadro dell'elenco viene nascosto
- Se in una visualizzazione di larghezza media o compatta è visibile solo il riquadro dei dettagli e la classe della dimensione della finestra si espande, l'elenco e i dettagli vengono visualizzati insieme e l'elenco indica che l'elemento corrispondente ai contenuti nel riquadro dei dettagli è selezionato
- Se in una visualizzazione di larghezza media o compatta è visibile solo il riquadro dell'elenco e viene ampliata per essere espansa, vengono visualizzati insieme l'elenco e un riquadro dei dettagli del segnaposto
La visualizzazione elenco è ideale per app di messaggistica, gestori dei contatti, browser di file o qualsiasi app in cui i contenuti possono essere organizzati come elenco di elementi che forniscono informazioni aggiuntive.
Implementazione
Un layout di elenco dettagliato può essere creato con una serie di tecnologie, tra cui Compose, le visualizzazioni e l'inserimento di attività (per le app precedenti). Consulta la sezione Applicabilità per decidere quale tecnologia è più adatta alla tua app.
La libreria SlidingPaneLayout
è progettata per l'implementazione di layout elenco-dettaglio basati su visualizzazioni o frammenti.
Innanzitutto, dichiara un SlidingPaneLayout
come elemento principale del layout XML.
Aggiungi poi i due elementi secondari, visualizzazioni o frammenti, che rappresentano i contenuti dell'elenco e dei dettagli.
Implementa una metodologia di comunicazione per trasmettere i dati tra le visualizzazioni elenco-dettaglio o i frammenti. ViewModel
è consigliato per la sua capacità di memorizzare la logica di business e resistere alle modifiche alla configurazione.
SlidingPaneLayout
determina automaticamente se visualizzare l'elenco e i dettagli insieme o singolarmente. In una finestra con spazio orizzontale sufficiente per ospitarli entrambi, l'elenco e i dettagli vengono visualizzati affiancati. In una finestra con spazio insufficiente, viene visualizzato l'elenco o i dettagli a seconda dell'interazione dell'utente con l'app.
Per un esempio di implementazione, consulta l'esempio di elenco dettagliato con riquadro scorrevole.
Incorporamento delle attività
Utilizza l'inserimento di attività per consentire alle app precedenti con più attività di mostrare due attività affiancate nella stessa schermata o una sopra l'altra. Se la tua app implementa l'elenco e i dettagli di un layout elenco-dettagli in attività separate, l'inserimento di attività ti consente di creare un layout elenco-dettagli con un refactoring del codice minimo o nullo.
Implementa l'inserimento di attività specificando una suddivisione della finestra delle attività utilizzando un file di configurazione XML. La suddivisione definisce l'attività principale, che avvia la suddivisione, e un'attività secondaria. Specifica la larghezza minima di visualizzazione per la suddivisione usando i punti di interruzione classe dimensioni finestra. Quando la larghezza del display scende al di sotto del breakpoint minimo, le attività vengono visualizzate una sopra l'altra. Ad esempio, se la larghezza minima del display è 600 dp, le attività vengono visualizzate una sopra l'altra sui display compatti, ma una accanto all'altra sui display medi e espansi.
L'inserimento di attività è supportato su Android 12L (livello API 32) e versioni successive, ma potrebbe essere disponibile anche su livelli API inferiori se implementato dai produttori di dispositivi. Quando l'incorporamento dell'attività non è disponibile su un dispositivo, il comportamento di riserva comporta l'attività dell'elenco o l'attività dei dettagli che occupa l'intera finestra dell'app in base all'interazione dell'utente con l'app.
Per maggiori informazioni, consulta la sezione Incorporamento delle attività.
Per un esempio di implementazione, consulta l'esempio List-detail with activity embedding.
Feed
Un layout del feed organizza gli elementi di contenuti equivalenti in una griglia configurabile per visualizzare in modo rapido e pratico una grande quantità di contenuti.
Dimensioni e posizione stabiliscono le relazioni tra gli elementi dei contenuti.
I gruppi di contenuti vengono creati impostando gli elementi sulle stesse dimensioni e posizionandoli insieme. L'attenzione viene attirata sugli elementi rendendoli più grandi di quelli vicini.
Le schede e gli elenchi sono componenti comuni dei layout dei feed.
Un layout del feed supporta visualizzazioni di quasi tutte le dimensioni perché la griglia può adattarsi da una singola colonna scorrevole a un feed scorrevole con più colonne di contenuti.
I feed sono particolarmente adatti per le app di notizie e di social media.
Implementazione
Un RecyclerView
consente di visualizzare in modo efficiente un numero elevato di elementi in una singola colonna. Un GridLayoutManager
dispone gli elementi in una griglia, consentendo la configurazione delle dimensioni e degli intervalli degli elementi.
Configura le colonne della griglia in base alle dimensioni dell'area di visualizzazione disponibile per impostare la larghezza minima consentita per gli elementi.
La strategia di estensione predefinita GridLayoutManager
, che è un intervallo per elemento,
può essere ignorata creando un elemento SpanSizeLookup
personalizzato. Modifica l'intervallo per mettere in evidenza alcuni elementi rispetto ad altri.
Sui display di larghezza compatta con spazio sufficiente per una sola colonna, utilizza LinearLayoutManager
anziché GridLayoutManager
.
Per un esempio di implementazione, consulta l'esempio di feed con visualizzazioni.
Riquadro di supporto
Il layout del riquadro di supporto organizza i contenuti dell'app in aree di visualizzazione principali e secondarie.
L'area di visualizzazione principale occupa la maggior parte della finestra dell'app (in genere circa due terzi) e contiene i contenuti principali. L'area di visualizzazione secondaria è un riquadro che occupa il resto della finestra dell'app e presenta contenuti che supportano i contenuti principali.
I layout dei riquadri di supporto funzionano bene sui display con larghezza espansa (vedi Utilizzare le classi di dimensione della finestra) in orientamento orizzontale. I display di larghezza media o compatta supportano la visualizzazione sia dell'area di visualizzazione principale che di quella secondaria se i contenuti sono adattabili a spazi di visualizzazione più stretti o se i contenuti aggiuntivi possono essere inizialmente nascosti in un riquadro in basso o laterale accessibile tramite un controllo come un menu o un pulsante.
Il layout del riquadro di supporto è diverso da quello dell'elenco dettagliato per quanto riguarda la relazione tra i contenuti principali e secondari. I contenuti del riquadro secondario sono significativi solo in relazione ai contenuti principali; ad esempio, una finestra dello strumento del riquadro di supporto è irrilevante da sola. I contenuti supplementari nel riquadro dei dettagli di un layout elenco dettagli, tuttavia, sono significativi anche senza i contenuti principali, ad esempio la descrizione di un prodotto di una scheda di prodotto.
I casi d'uso per il riquadro di supporto includono:
- App per la produttività: un documento o un foglio di lavoro accompagnato da commenti del revisore in un riquadro di supporto
- App multimediali: un video in streaming integrato da un elenco di video correlati in un riquadro di supporto o la rappresentazione di un album musicale integrato da una playlist
- App di ricerca e di riferimento:un modulo di inserimento di query con i risultati in un riquadro di supporto
Implementazione
Un layout riquadro di supporto viene implementato utilizzando un layout di supporto come
LinearLayout
oppure ConstraintLayout
. Stabilire le classi di dimensioni delle finestre
che dividono la quantità di spazio di visualizzazione orizzontale disponibile per la tua app in
tre categorie: compatto (< 600 dp), medio (>= 600 dp) ed espanso
(>= 840 dp).
Per ogni classe di dimensioni della finestra, definisci i layout come segue:
- Compatto: nella cartella
layout
delle risorse dell'app, posiziona i contenuti che visualizzano il riquadro di supporto sotto i contenuti principali o all'interno di un riquadro in basso - Medio: nella cartella
layout-w600dp
, fornisci i contenuti del riquadro di supporto in modo che i contenuti principali e il riquadro di supporto vengano visualizzati affiancati, dividendo lo spazio di visualizzazione orizzontale in modo uniforme - Espanso: nella cartella
layout-w840dp
, includi i contenuti del riquadro di supporto che comporta il rendering dei contenuti principali e del riquadro di supporto affiancati; il riquadro di supporto occupa solo il 30% dello spazio orizzontale, lasciando il restante 70% per i contenuti principali
Utilizza un ViewModel
per la comunicazione tra i contenuti principali e il riquadro di supporto, indipendentemente dall'utilizzo di visualizzazioni, frammenti o una combinazione.
Per esempi di implementazione, consulta i seguenti esempi:
Applicabilità
I layout canonici creano presentazioni sfaccettate dei contenuti per un facile accesso ed esplorazione approfondita. Utilizza il seguente diagramma di flusso per determinare quale strategia di layout e implementazione è la migliore per i casi d'uso della tua app.
Per esempi dei layout canonici implementati in diversi tipi di app, consulta la galleria per schermi di grandi dimensioni.

Risorse aggiuntive
- Material Design - Layout canonici