Creazione di app adattive

Oggi sono in uso più di 300 milioni di dispositivi Android con schermi di grandi dimensioni, tra cui tablet, dispositivi pieghevoli, dispositivi ChromeOS, display per auto e TV, e ne vengono aggiunti continuamente. Per offrire un'esperienza utente ottimale al numero crescente e alla diversità di dispositivi con schermi di grandi dimensioni, nonché su smartphone standard, crea app adattive.

Cosa sono le app adattive?

Le app adattive cambiano layout in base alle modifiche nella visualizzazione dell'app, in particolare alle dimensioni della finestra dell'app. Le app adattive, però, supportano anche i cambiamenti nella postura dei dispositivi pieghevoli, come la postura dei libri o sui tavoli, e le modifiche alla densità dello schermo e alle dimensioni dei caratteri.

Invece di limitarsi ad ampliare o ridurre gli elementi dell'interfaccia utente in risposta a finestre di dimensioni diverse, le app adattive sostituiscono i componenti di layout e mostrano o nascondono i contenuti. Ad esempio, su smartphone standard un'app adattiva potrebbe mostrare una barra di navigazione inferiore, ma su schermi di grandi dimensioni una barra di navigazione. Su schermi di grandi dimensioni, le app adattive mostrano più contenuti, ad esempio un layout con due riquadri e elenco dettagliato; su schermi di piccole dimensioni, meno contenuti, l'elenco o i dettagli.

Figura 1. L'app adattiva ottimizza il layout per finestre di dimensioni diverse.

Nel passato, quando gli smartphone erano al centro di tutto, le app venivano eseguite a schermo intero. Attualmente, le app vengono eseguite in modalità multi-finestra in finestre di dimensioni arbitrarie, indipendentemente dalle dimensioni dello schermo del dispositivo. Gli utenti possono modificare la dimensione della finestra in qualsiasi momento. Quindi anche su un solo tipo di dispositivo, le app devono essere adattive.

Le app adattive hanno un aspetto eccellente e funzionano bene su qualsiasi dispositivo e in qualsiasi configurazione.

Perché creare UI adattive?

Gli utenti si aspettano che la tua app funzioni perfettamente su tutti i loro dispositivi e offra funzionalità avanzate su schermi di grandi dimensioni. Gli utenti possono eseguire il multitasking in modalità multifinestra per un'esperienza con le app migliorata e una maggiore produttività.

Le app limitate al multitasking sui telefoni standard perdono una base di utenti in espansione con diverse possibilità.

Google Play

Google Play fornisce raccolte e consigli di app specifici per tablet e dispositivi pieghevoli, che consentono agli utenti di scoprire app di alta qualità.

Google Play dà un ranking più alto alle app e ai giochi ottimizzati per gli schermi grandi rispetto alle app non ottimizzate. Il ranking si basa sulle norme sulla qualità delle app per schermi di grandi dimensioni. Un ranking più elevato aumenta la visibilità consentendo agli utenti multi-dispositivo di vedere valutazioni e recensioni specifiche per gli schermi di grandi dimensioni sui loro smartphone.

Le app che non rispettano gli standard di qualità per gli schermi di grandi dimensioni del Play Store mostrano un avviso nella pagina dei dettagli dell'app. L'avviso avvisa gli utenti che l'app potrebbe non funzionare bene sui loro dispositivi con schermi di grandi dimensioni.

Figura 2. Avviso di qualità tecnica nella pagina dei dettagli dell'app.

Crea app adattabili per ampliare la rilevabilità su Google Play e massimizzare il numero di dispositivi che possono scaricare la tua app.

Come iniziare

Valuta la possibilità di utilizzare il design adattivo in tutte le fasi dello sviluppo dell'app, dalla pianificazione al deployment. Fornisci ai grafici informazioni sul design adattivo. Progetta la tua app in modo che sia adattiva e creerai un'app gestibile, estensibile e pronta per i futuri fattori di forma e modalità windowing.

Per creare un'app adattabile che supporti tutte le dimensioni e le configurazioni del display, svolgi i seguenti passaggi:

  • Utilizzare le classi di dimensioni delle finestre per prendere decisioni relative al layout
  • Creare app con la raccolta Compose Material 3 Adaptive
  • Supportare l'input oltre il tocco
  • Esegui test su tutti i tipi di dispositivi

Classi di dimensioni delle finestre

Le dimensioni della finestra dell'app possono essere diverse su dispositivi diversi o sullo stesso dispositivo nel caso dei dispositivi pieghevoli, anche quando l'app è a schermo intero. Orientamenti diversi del dispositivo producono proporzioni diverse. In modalità multifinestra, le dimensioni, le proporzioni e l'orientamento della finestra dell'app possono essere diverse da quelle dello schermo del dispositivo.

Le app adattabili semplificano e generalizzano il problema della determinazione e della gestione delle dimensioni, delle proporzioni e dell'orientamento della finestra tenendo conto solo della finestra dell'app al momento del rendering dei layout, il che funziona anche quando la finestra dell'app è a schermo intero.

Le classi di dimensioni delle finestre classificano le finestre dell'app come compatte, medie o espandete in base alla larghezza o all'altezza della finestra.

Raffigurazione delle classi di dimensioni della finestra con larghezza compatta, media ed espansa.
Figura 3. Classi di dimensioni della finestra in base alla larghezza del display.

Calcola WindowSizeClass della tua app utilizzando la funzione di primo livello currentWindowAdaptiveInfo() della libreria Compose Material 3 Adaptive. La funzione restituisce un'istanza di WindowAdaptiveInfo, che contiene windowSizeClass. La tua app riceve aggiornamenti ogni volta che la classe delle dimensioni della finestra cambia:

val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass

Riquadri dei contenuti

Il layout di un'attività è a volte definito schermata. Ad esempio, la tua app potrebbe avere una schermata Home, una schermata di elenco e una schermata dei dettagli dell'articolo. La terminologia implica che ogni attività riempia lo schermo del dispositivo.

Tuttavia, sugli schermi dei dispositivi sufficientemente grandi da supportare la classe di dimensioni della finestra di larghezza espansa, possono essere visualizzate contemporaneamente più schermate di attività. Riquadro è un termine più preciso per la visualizzazione dei contenuti delle singole attività.

Le classi di dimensioni della finestra ti consentono di determinare il numero di riquadri dei contenuti da mostrare nei layout con più riquadri, come specificato in Material Design.

Schermate del dispositivo suddivise in riquadri: un riquadro nelle classi di dimensioni delle finestre compatte e medie, due riquadri nella classe di dimensioni delle finestre espanse.
Figura 4. Numero di riquadri di contenuti per classe di dimensioni della finestra.

I riquadri sono navigabili. Nelle classi di dimensioni delle finestre compatte e medie, le app mostrano un singolo riquadro, pertanto la navigazione verso qualsiasi destinazione mostra un riquadro.

Nella classe di dimensioni della finestra espansa, le app possono mostrare contenuti correlati in più riquadri, ad esempio un layout di elenco e dettagli. La navigazione in uno dei riquadri mostra il layout a due riquadri. Se le dimensioni della finestra diventano compatte o medie, le app adattive mostrano un solo riquadro, la destinazione di navigazione, l'elenco o i dettagli.

Figura 5. Layout dei dettagli dell'elenco con riquadro dell'elenco come destinazione di navigazione.
Figura 6. Layout elenco dettagliato con riquadro dei dettagli come destinazione di navigazione.

Compose Material 3 Adaptive

Jetpack Compose è l'approccio moderno e dichiarativo per la creazione di app adattive senza il peso della duplicazione e della manutenzione di più file di layout.

La libreria Compose Material 3 Adaptive contiene composabili che gestiscono classi di dimensioni delle finestre, componenti di navigazione, layout con più riquadri e posizioni di cerniera e modalità pieghevoli, ad esempio:

  • NavigationSuiteScaffold: passa automaticamente dalla barra di navigazione alla barra laterale di navigazione in base alla classe delle dimensioni della finestra dell'app e all'orientamento del dispositivo.

  • ListDetailPaneScaffold: implementa il layout canonico di dettagli dell'elenco.

    Adatta il layout alle dimensioni della finestra dell'app. Mostra un elenco e i dettagli di un elemento dell'elenco in riquadri affiancati nella classe di dimensioni della finestra espansa, ma solo l'elenco o i dettagli nelle classi di dimensioni della finestra compatta e media.

  • SupportingPaneScaffold: implementa il layout canonico del riquadro di supporto.

    Mostra il riquadro dei contenuti principali e un riquadro di supporto nella classe di dimensioni della finestra espansa, ma solo il riquadro dei contenuti principali nelle classi di dimensioni della finestra compatta e media.

La libreria adattiva Compose Material 3 è una dipendenza indispensabile per lo sviluppo di app adattive.

Configurazione e continuità

Le app adattabili mantengono la continuità durante le modifiche alla configurazione.

Una modifica della configurazione si verifica quando la finestra dell'app viene ridimensionata, la posizione di un dispositivo pieghevole cambia o la densità dello schermo o il carattere cambiano.

Per impostazione predefinita, le modifiche alla configurazione ricreano l'attività dell'app e viene perso tutto lo stato dell'attività. Per mantenere la continuità, le app adattive salvano lo stato nel metodo onSaveInstanceState() dell'attività o in un ViewModel.

Postura

Le app adattive rispondono alle variazioni dell'orientamento dei dispositivi pieghevoli. Le posture includono quelle da tavolo e con libro.

Figura 7. Dispositivo pieghevole in posizione da tavolo.

L'interfaccia WindowInfoTracker in Jetpack WindowManager ti consente di ottenere un elenco di oggetti DisplayFeature per il dispositivo. Tra le funzionalità del display c'è FoldingFeature.State, che indica se il dispositivo è completamente o a metà aperto.

La libreria Compose Material 3 Adaptive fornisce la funzione di primo livello currentWindowAdaptiveInfo(), che restituisce un'istanza di WindowAdaptiveInfo contenente windowPosture.

Input oltre il tocco

Gli utenti spesso collegano tastiere, trackpad, mouse e stili esterni ai dispositivi con schermo di grandi dimensioni. Le periferiche migliorano la produttività degli utenti, la precisione dell'input, l'espressione personale e l'accessibilità. La maggior parte dei dispositivi ChromeOS è dotata di tastiere e trackpad integrati.

Le app adattive supportano i dispositivi di input esterni, ma gran parte del lavoro viene svolto per te dal framework Android:

  • Jetpack Compose 1.7 e versioni successive: sono supportati per impostazione predefinita la navigazione nelle schede della tastiera e il clic, la selezione e lo scorrimento del mouse o del trackpad.

  • Libreria Jetpack androidx.compose.material3: consente agli utenti di scrivere in qualsiasi componente TextField utilizzando uno stilo.

  • Assistente scorciatoie da tastiera: consente agli utenti di rilevare le scorciatoie da tastiera delle app e della piattaforma Android. Pubblica le scorciatoie da tastiera dell'app nell'Assistente scorciatoie da tastiera eseguendo l'override del callback della finestra onProvideKeyboardShortcuts().

Per supportare completamente i fattori di forma di tutte le dimensioni, le app adattive supportano input di tutti i tipi.

Come testare le app adattive

Testa diverse dimensioni di schermo e finestra e configurazioni di dispositivi diverse. Utilizza gli screenshot lato host e le anteprime di Compose per controllare i layout delle app. Esegui la tua app su emulatori Android Studio e dispositivi Android remoti ospitati nei data center di Google.

Norme sulla qualità delle app per schermi di grandi dimensioni

Le linee guida sulla qualità delle app per schermi di grandi dimensioni garantiscono che la tua app adattiva funzioni bene su tablet, dispositivi pieghevoli e ChromeOS. Le linee guida includono test che ti consentono di verificare la funzionalità dell'app per i percorsi critici degli utenti. Anche se le linee guida si concentrano sugli schermi di grandi dimensioni, sono compatibili con schermi di tutte le dimensioni.

Più configurazioni

L'interfaccia di DeviceConfigurationOverride in Compose 1.7 e versioni successive consente di eseguire l'override di vari aspetti della configurazione del dispositivo. L'API simula diverse configurazioni dei dispositivi in modo localizzato per qualsiasi contenuto componibile che vuoi testare. Ad esempio, puoi testare più dimensioni dell'interfaccia utente arbitrarie in un'unica esecuzione della suite di test su un singolo dispositivo o emulatore.

Grazie alla funzione di estensione DeviceConfigurationOverride.then(), puoi testare contemporaneamente più parametri di configurazione, come dimensioni del carattere, impostazioni internazionali, tema e dimensioni del layout.

Screenshot lato host

I test degli screenshot lato host sono un modo rapido e scalabile per verificare l'aspetto visivo dei layout delle app. Utilizza gli screenshot lato host per testare l'UI su una serie di dimensioni di visualizzazione.

Per ulteriori informazioni, consulta la sezione Creare il test dello screenshot di anteprima.

Crea anteprime

Le anteprime di Compose ti consentono di controllare l'UI dell'app nella visualizzazione Struttura di Android Studio. Le anteprime utilizzano annotazioni, come @PreviewScreenSizes, @PreviewFontScale e @PreviewLightDark, per consentirti di visualizzare i contenuti composable in varie configurazioni. Puoi anche interagire con le anteprime.

Android Studio evidenzia anche i problemi di usabilità comuni nelle anteprime, ad esempio pulsanti o campi di testo troppo larghi.

Per ulteriori informazioni, consulta Visualizzare l'anteprima dell'interfaccia utente con le anteprime componibili.

Emulatori

Android Studio offre una serie di emulatori per testare diverse dimensioni del layout:

  • Emulatore ridimensionabile: emula uno smartphone, un tablet o un dispositivo pieghevole e consente di passare da uno all'altro al volo
  • Emulatore Pixel Fold: emula lo smartphone pieghevole con schermo grande Pixel Fold
  • Emulatore Pixel Tablet: emula il dispositivo Pixel Tablet con schermo grande
  • Emulatore desktop: consente di testare il windowing senza un formato, il passaggio del mouse e le scorciatoie da tastiera

Streaming da dispositivo remoto

Connettiti in sicurezza ai dispositivi Android remoti ospitati nei data center di Google ed esegui la tua app sui dispositivi Pixel e Samsung più recenti. Installa e esegui il debug delle app, esegui comandi ADB, ruota e piega i dispositivi per assicurarti che la tua app funzioni bene su una varietà di dispositivi reali.

Lo streaming di dispositivi remoti è integrato in Android Studio. Per ulteriori informazioni, consulta Streaming dispositivo Android, basato su Firebase.

Risorse aggiuntive