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 loro app siano compatibili con questa funzionalità:

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

Inoltre, Android 13 (livello API 33) introduce un gesto predittivo Indietro 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 di ritorno predittivo.

Fornire contenuti dell'app da un'estremità all'altra

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

Per maggiori dettagli, consulta Mostrare i contenuti a schermo intero nella tua app.

Gestire i gesti delle app in conflitto

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

Conflitti con i gesti Indietro

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

Ad esempio:

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 di Home o di attivazione/disattivazione rapida

I nuovi gesti di sistema per la casa e il cambio rapido richiedono entrambi scorrimenti nella parte inferiore dello schermo nello spazio precedentemente occupato dalla barra di navigazione. Le app non possono disattivare questi gesti, come possono fare con il gesto Indietro.

Per ovviare a questo problema, Android 10 introduce l'API WindowInsets.getMandatorySystemGestureInsets() che informa le app delle soglie di riconoscimento dei tocchi.

Giochi e altre app senza visualizzazione

I giochi e altre app che non hanno una gerarchia di visualizzazioni spesso richiedono all'utente di eseguire scorrimenti vicino alle aree dei gesti di sistema. In questi casi, i giochi possono utilizzare Window.setSystemGestureExclusionRects() per escludere le aree che si sovrappongono a quelle 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 dei gesti della casa, l'app può richiedere di essere visualizzata in modalità immersiva. In questo modo vengono disattivati i gesti di sistema mentre l'utente interagisce con il gioco, ma l'utente può riattivarli mediante il dito dalla parte inferiore dello schermo.

Aggiorna l'app per supportare il gesto Indietro predittivo

Android 13 (livello API 33) introduce un gesto di ritorno predittivo per i dispositivi Android come smartphone, schermi di grandi dimensioni e dispositivi pieghevoli. Il gesto di scambio 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 di ritorno prima di completarlo, in modo da decidere se continuare o rimanere nella visualizzazione corrente.

Per maggiori dettagli, consulta Aggiungere il supporto per il gesto di ritorno predittivo.

Risorse aggiuntive

Per ulteriori informazioni sulla navigazione tramite gesti, consulta quanto segue:

Blog post

Video