Garantire la compatibilità con la navigazione tramite gesti

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

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

Inoltre, Android 13 (livello API 33) introduce una gesto Indietro predittivo per Android come smartphone, schermi di grandi dimensioni e pieghevoli, che fanno parte di un'azienda 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 messo a disposizione dalla barra di navigazione, devi configurare determinate modifiche nell'app.

Consulta la sezione Visualizzare i contenuti edge-to-edge nell'app per maggiori dettagli.

Gestire i gesti delle app in conflitto

Il modello di navigazione tramite gesti potrebbe essere in conflitto con i gesti precedentemente utilizzati dagli sviluppatori di app. Potresti dover apportare modifiche all'utente dell'app a riga di comando.

Conflitti con i gesti Indietro

Il nuovo gesto di sistema per tornare indietro è uno scorrimento verso l'interno da sinistra o bordo destro dello schermo. Ciò potrebbe interferire con gli elementi di navigazione dell'app in quelle aree. Per mantenere la funzionalità degli elementi sui bordi sinistro e destro dello schermo, disattiva il gesto Indietro in modo selettivo indicando le regioni che devono ricevere input tocco. Puoi farlo passando un List<Rect> per View.setSystemGestureExclusionRects() API introdotta in Android 10. Questo metodo è disponibile anche in ViewCompat a partire dal giorno 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 Home o per il passaggio rapido

I nuovi gesti di sistema per la schermata Home e per il passaggio rapido prevedono entrambi scorrimenti verso il nella parte inferiore dello schermo, nello spazio precedentemente occupato dalla barra di navigazione. App non possono disattivare questi gesti a differenza del gesto Indietro.

Per ovviare al problema, Android 10 introduce la WindowInsets.getMandatorySystemGestureInsets() che informa le app delle soglie di riconoscimento del tocco.

Giochi e altre app senza visualizzazione

I giochi e altre app che non hanno una gerarchia di visualizzazione spesso richiedono all'utente di Scorri vicino alle aree dei gesti di sistema. In questi casi, i giochi possono utilizzare Window.setSystemGestureExclusionRects() per escludere aree che si sovrappongono ad aree riservate ai gesti di sistema. Partite deve 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 schermata Home, l'app può di pubblicazione in modalità immersiva. L'operazione disattiva i gesti di sistema mentre l'utente sta interagendo con il gioco, ma consente all'utente di riattivarlo 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 Android come smartphone, schermi di grandi dimensioni e pieghevoli. Il pulsante Indietro predittivo fa parte di una release pluriennale. Quando è completamente implementata, questa funzionalità consente agli utenti di visualizzare in anteprima la destinazione o un altro risultato di un gesto Indietro prima la completano, consentendo loro di decidere se continuare o rimanere la vista corrente.

Consulta Aggiungere il supporto per il gesto Indietro predittivo per maggiori dettagli.

Risorse aggiuntive

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

Blog post

Video