Novità sul prodotto

Jetpack WindowManager 1.5 è stabile

Lettura di 3 minuti
Francesco Romano
Developer Relations Engineer, Android

Siamo felici di annunciare che Jetpack WindowManager 1.5.0 è ora stabile.

Questa release si basa sulla solida base di adattabilità di WindowManager, rendendo ancora più semplice la creazione di UI raffinate e adattive che hanno un aspetto eccezionale su schermi di qualsiasi dimensione. Man mano che l'ecosistema Android continua a crescere, gli utenti interagiscono con le app su una gamma di dispositivi più ampia che mai: da smartphone e pieghevoli a tablet, display connessi, Chromebook e persino display dell'auto in modalità di parcheggio.

WindowManager 1.5 si concentra sulla fornitura di strumenti migliori per questo ambiente di dispositivi eterogeneo.

Novità di WindowManager 1.5

Questa release stabile introduce nuovi punti di interruzione per schermi molto grandi, migliora l'API per l'incorporamento delle attività e offre maggiore flessibilità per il calcolo delle metriche delle finestre.

Nuove classi di dimensioni delle finestre: Large ed Extra large

Il più grande aggiornamento della versione 1.5 è l'aggiunta di due nuove classi di dimensioni della finestra di larghezza: Grande ed Extra large.

Le classi di dimensioni della finestra sono il nostro insieme ufficiale e soggettivo di punti di interruzione del viewport che ti aiutano a progettare e sviluppare layout adattabili. Con la versione 1.5, estendiamo queste linee guida agli schermi che vanno oltre i tablet tipici.

Ecco i nuovi punti di interruzione della larghezza:

  • Grande:per larghezze comprese tra 1200 dp e 1600 dp
  • Molto grande:per larghezze ≥ 1600 dp
window_size_classes_width.png

Le diverse classi di dimensioni delle finestre in base alla larghezza del display. 

Perché sono importanti?

A partire da Android 16 QPR1 Beta 2, Android supporta i display connessi, consentendo agli utenti di collegare un display esterno al proprio dispositivo e trasformarlo in uno strumento simile a un computer con uno schermo di grandi dimensioni.

ADB_5350_asset.gif

Smartphone connesso a un display esterno, con una sessione desktop sul display esterno. 

Con questa nuova funzionalità disponibile, è fondamentale fornire indicazioni precise per includere display più grandi. 

Su queste superfici molto grandi, la semplice scalabilità del layout espanso di un tablet non sempre garantisce la migliore esperienza utente. Ad esempio, un client di posta potrebbe mostrare comodamente due riquadri (una casella di posta e un messaggio) nella classe di dimensioni della finestra Espansa. Ma su un monitor desktop extra large, il client email potrebbe visualizzare elegantemente tre o anche quattro riquadri, ad esempio una casella di posta, un elenco di messaggi, i contenuti completi del messaggio e un riquadro di calendario/attività, tutto in una volta.

Fornendo punti di interruzione ufficiali per dimensioni di visualizzazione molto grandi, WindowManager 1.5 ti offre un segnale chiaro per introdurre layout progettati specificamente per un'esperienza desktop produttiva e ricca di informazioni.

Le classi di dimensioni della finestra possono essere calcolate utilizzando computeWindowSizeClass(), che è una funzione di estensione della libreria androidx.window.core.layout che estende il tipo Set<WindowSizeClass>

Per includere le nuove classi di dimensioni della finestra nel tuo progetto, chiama la funzione dal set WindowSizeClass.BREAKPOINTS_V2 anziché da WindowSizeClass.BREAKPOINTS_V1:

  val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


Poi applica il layout corretto quando hai la certezza che la tua app abbia almeno quello spazio:

  if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

Librerie adattive

La libreria Compose Material 3 Adaptive ti aiuta a creare UI adattive che si adattano automaticamente in base alle configurazioni della finestra correnti, come le classi di dimensioni della finestra o le posture del dispositivo. 

La buona notizia è che la libreria è già aggiornata con i nuovi punti di interruzione. A partire dalla versione 1.2 (ora in fase di Release Candidate), le direttive di scaffolding del riquadro predefinito supportano le classi di dimensioni della larghezza della finestra Large ed Extra-large.

Devi solo attivare la funzionalità dichiarando nel file di build Gradle che vuoi utilizzare i nuovi punti di interruzione:

  currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

Miglioramenti aggiuntivi

  • Incorporamento di attività: salvataggio e ripristino automatici. WindowManager ora può salvare e ripristinare automaticamente lo stato delle divisioni di incorporamento delle attività. Ciò contribuisce a preservare il layout dell'utente durante la ricreazione del processo, garantendo un'esperienza più stabile e coerente. Gli sviluppatori non devono più salvare e ripristinare manualmente lo stato, ma possono semplicemente attivare il salvataggio automatico impostando la proprietà EmbeddingConfiguration#isAutoSaveEmbeddingState.
  • Expanded WindowMetrics: ora puoi calcolare WindowMetrics da un contesto dell'applicazione, non solo da un contesto dell'attività. Ciò offre maggiore flessibilità per accedere alle informazioni sulle finestre da diverse parti dell'app.

Come iniziare

Per iniziare a utilizzare le nuove classi di dimensioni Large ed Extra-large e altre funzionalità 1.5 nei tuoi progetti Android, aggiorna le dipendenze dell'app in build.gradle.kts all'ultima versione stabile:

  dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5 è un altro passo avanti per la creazione di app completamente adattive che funzionano su tutti i fattori di forma Android. Consulta le note di rilascio ufficiali per un elenco completo delle modifiche e delle correzioni di bug.

Buona programmazione!

Scritto da:

Continua a leggere