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.
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.
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à.
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
.
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.
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à).
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.
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.
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.
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.
Non utilizzare le seguenti API Display
ritirate per determinare le dimensioni della finestra:
getSize()
: ritirato in Android 11 (livello API 30)getMetrics()
: ritirato in Android 11 (livello API 30)getRealSize()
: ritirato in Android 12 (livello API 31)getRealMetrics()
: ritirato in Android 12 (livello API 31)
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.
Crea con Compose. Tieniti al corrente sulle ultime funzionalità e release.
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.
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.
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.
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.
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.
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.
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.
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.