Jetpack Compose Academy · Lezione

Trascinamento, swipe e fling

Tenga traccia del movimento e dell'inerzia.

Lezione 2 di 413 passaggi

Trascinamento, swipe e fling è una lezione Jetpack Compose Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Jetpack Compose Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Jetpack Compose Academy include 4 lezioni in totale.

Seguire il dito

Trascinare significa seguire quanto si sposta un dito e aggiornare l'interfaccia di conseguenza. Compose rende tutto fluido con rilevatori dedicati per il drag. ✋

Rilevare i gesti di trascinamento

All'interno di pointerInput, chiami detectDragGestures. La relativa lambda onDrag viene eseguita ripetutamente con la variazione e la distanza percorsa dall'ultimo evento.

detectDragGestures { change, drag -> /* move */ }

Accumularе l'offset

Mantenga un Offset nello stato e aggiunga ogni variazione del trascinamento. Passi quindi quell'offset a un Modifier, così l'elemento segue il dito.

var offset by remember { mutableStateOf(Offset.Zero) }
offset += drag

Applicare con il Modifier offset

Utilizzi il modificatore offset per spostare un composable dei pixel tracciati. Converta con roundToInt per posizionarlo correttamente sullo schermo.

Modifier.offset { IntOffset(offset.x.roundToInt(), offset.y.roundToInt()) }

Consumare la modifica

Chiami change.consume() nel gestore del trascinamento. In questo modo comunica ai genitori di aver gestito l'evento, impedendo loro di reagire a loro volta.

detectDragGestures { change, drag -> change.consume() }

Limitare a un solo asse

Le serve solo un movimento orizzontale? Utilizzi detectHorizontalDragGestures, oppure detectVerticalDragGestures per il movimento verticale. Entrambi restituiscono una singola variazione Float.

detectHorizontalDragGestures { _, dx -> x += dx }

Scorrere per chiudere

Uno swipe è semplicemente un trascinamento che si valuta alla fine. Se il dito ha percorso una distanza sufficiente, lo consideri una chiusura anziché tornare indietro con lo snap.

Il draggable di alto livello

Per un semplice trascinamento su un solo asse, il modificatore draggable è più semplice. Lo associ a rememberDraggableState per raccogliere la variazione.

Modifier.draggable(state, orientation = Orientation.Horizontal)

Il fling richiede la velocità

Un fling continua a muoversi dopo il rilascio in base alla velocità. Tracci la velocità con un VelocityTracker mentre il dito si sposta, per acquisire quello slancio.

val tracker = VelocityTracker()

Animare il decadimento

Passi la velocità al rilascio a un Animatable con una specifica di decadimento. L'elemento scivola fino a fermarsi naturalmente, imitando la fisica reale. 🌀

animatable.animateDecay(velocity, exponentialDecay())

Sapere quando termina

detectDragGestures fornisce anche onDragEnd e onDragCancel. Li utilizzi per tornare indietro con lo snap, stabilizzare l'elemento o avviare l'animazione del fling.

detectDragGestures(onDragEnd = { /* fling here */ }) {...}

Verifica rapida

Di cosa ha bisogno un'animazione di fling che un semplice trascinamento non richiede?

Riepilogo: muoversi con lo slancio

Ha tracciato i trascinamenti con detectDragGestures, accumulato un offset, valutato gli scorrimenti e utilizzato la velocità per un fling. Ora il tocco è vivo. 🎉

Gratis per iniziare

Impara Kotlin con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Trascinamento, swipe e fling» è gratuita?

Sì — il testo completo di «Trascinamento, swipe e fling» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Jetpack Compose Academy, passa a CoddyKit PRO. Il corso Jetpack Compose Academy include 4 lezioni in totale.

Cosa imparerò in «Trascinamento, swipe e fling»?

Tenga traccia del movimento e dell'inerzia. Eserciti Jetpack Compose Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Jetpack Compose Academy?

Non è richiesta alcuna esperienza precedente. Jetpack Compose Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Trascinamento, swipe e fling»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Jetpack Compose Academy?

Sì. Ogni lezione Jetpack Compose Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. pointerInput e detectTapGestures
  2. Trascinamento, swipe e fling
  3. Transform: pan, zoom e rotazione
  4. Connessioni di scorrimento annidate
← Torna a Jetpack Compose Academy