Garantire la compatibilità con la navigazione tramite gesti

A partire da Android 10 (livello API 29), il sistema Android supporta la navigazione completamente basata sui gesti. Gli sviluppatori di app devono fare due cose per assicurarsi che le proprie app siano compatibili con questa funzionalità:

  • Estendi i contenuti dell'app da un bordo all'altro.
  • Gestire i gesti delle app in conflitto.

Inoltre, Android 13 (livello API 33) introduce un gesto di ritorno predittivo per dispositivi Android come smartphone, schermi di grandi dimensioni e pieghevoli, che fa parte di una release pluriennale. Gli sviluppatori di app possono adottare misure per assicurarsi che le loro app supportino il gesto Indietro predittivo.

Fornisci contenuti dell'app edge-to-edge

Per sfruttare lo spazio aggiuntivo sullo schermo reso disponibile dalla barra di navigazione mobile, devi configurare determinate modifiche nell'app.

Per i dettagli, consulta Visualizzare i contenuti a livello perimetrale nell'app.

Gestire i gesti delle app in conflitto

Il modello di navigazione tramite gesti potrebbe entrare in conflitto con i gesti precedentemente utilizzati dagli sviluppatori di app. Di conseguenza, potresti dover apportare modifiche all'interfaccia utente dell'app.

Conflitti con gesti Indietro

Il nuovo gesto di sistema per tornare indietro consiste nello scorrere verso l'interno dal bordo sinistro o destro dello schermo. Questo potrebbe interferire con gli elementi di navigazione dell'app in queste aree. Per mantenere la funzionalità degli elementi sui bordi sinistro e destro dello schermo, disattiva in modo selettivo il gesto Indietro indicando al sistema quali aree devono ricevere l'input tocco. Puoi farlo trasmettendo un List<Rect> all'API View.setSystemGestureExclusionRects() introdotta in Android 10. Questo metodo è disponibile anche in ViewCompat a partire dal giorno androidx.core:core:1.1.0-dev01.

Ecco alcuni esempi:

Kotlin

var exclusionRects = listOf(rect1, rect2, rect3)

fun onLayout(
        changedCanvas: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
  // Update rect bounds and the exclusionRects list
  setSystemGestureExclusionRects(exclusionRects)
}

fun onDraw(canvas: Canvas) {
  // Update rect bounds and the exclusionRects list
  setSystemGestureExclusionRects(exclusionRects)
}

Java

List<Rect> exclusionRects;

public void onLayout(
        boolean changedCanvas, int left, int top, int right, int bottom) {
    // Update rect bounds and the exclusionRects list
    setSystemGestureExclusionRects(exclusionRects);
}

public void onDraw(Canvas canvas) {
    // Update rect bounds and the exclusionRects list
    setSystemGestureExclusionRects(exclusionRects);
}

Conflitti con i gesti della schermata Home o per il passaggio rapido

I nuovi gesti di sistema per accedere alla schermata Home e per il passaggio rapido prevedono entrambi scorrimenti nella parte inferiore dello schermo, nello spazio precedentemente occupato dalla barra di navigazione. Le app non possono disattivare questi gesti come per il gesto Indietro.

Per limitare questo problema, Android 10 introduce l'API WindowInsets.getMandatorySystemGestureInsets(), che indica alle app le soglie del riconoscimento del tocco.

Giochi e altre app non View

I giochi e altre app che non hanno una gerarchia di visualizzazione richiedono spesso all'utente di scorrere accanto alle aree dei gesti di sistema. In questi casi, i giochi possono usare Window.setSystemGestureExclusionRects() per escludere aree che si sovrappongono ad aree riservate ai gesti di sistema. I giochi devono assicurarsi di escludere queste aree solo quando necessario, ad esempio durante il gameplay.

Se un gioco richiede all'utente di scorrere vicino all'area del gesto Home, l'app può richiedere di essere impostata in modalità immersiva. In questo modo vengono disattivati i gesti di sistema quando l'utente interagisce con il gioco, ma l'utente può riattivare i gesti di sistema scorrendo dalla parte inferiore dello schermo.

Aggiorna l'app per supportare il gesto Indietro predittivo

Android 13 (livello API 33) introduce un gesto Indietro predittivo per i dispositivi Android come smartphone, schermi grandi e pieghevoli. Il back-gesture predittivo fa parte di una release pluriennale. Una volta implementata completamente, questa funzionalità consente agli utenti di visualizzare l'anteprima della destinazione o di un altro risultato di un gesto Indietro prima di completarlo, consentendo loro di decidere se continuare o rimanere nella visualizzazione corrente.

Per maggiori dettagli, consulta Aggiungere il supporto del gesto Indietro predittivo.

Risorse aggiuntive

Per scoprire di più sulla navigazione tramite gesti, consulta le seguenti risorse:

Post sui blog

Video