0Pricing
Jetpack Compose Academy · Lezione

Transform: pan, zoom e rotazione

Supporti i gesti pinch e multitouch.

Transform: pan, zoom e rotazione è una lezione Jetpack Compose Academy gratuita su CoddyKit. Questa è la lezione 3 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.

Pizzicare, ingrandire, ruotare

Alcuni gesti utilizzano due dita contemporaneamente. Compose raggruppa traslazione, zoom e rotazione in un unico helper chiamato detectTransformGestures. 🤏

Un rilevatore, tre valori

All'interno di pointerInput, detectTransformGestures fornisce insieme la traslazione come Offset, lo zoom come fattore Float e la rotazione in gradi.

detectTransformGestures { _, pan, zoom, rotation -> }

Memorizzare i tre stati

Mantenga nello stato memorizzato una scale, un offset e una rotazione. Aggiorni ciascun valore in base al gesto, così l'elemento viene trasformato in tempo reale.

var scale by remember { mutableStateOf(1f) }

Moltiplicare lo zoom

Il valore di zoom è relativo, quindi lo moltiplichi per la scala invece di sostituirla. Allontanando le dita l'elemento cresce, avvicinandole si riduce.

scale *= zoom

Aggiungere la rotazione

La variazione di rotation è espressa in gradi per ogni fase del gesto. La accumuli, così ruotare due dita fa girare il contenuto in modo fluido.

angle += rotation

La traslazione lo sposta

L'Offset di pan indica di quanto si è spostato il centro del gesto. Lo aggiunga allo stato dell'offset per far scorrere il contenuto sotto le dita.

offset += pan

Applicare con graphicsLayer

Il modo più ordinato per visualizzare le trasformazioni è il modificatore graphicsLayer. Imposti scaleX, scaleY, rotationZ e translation in un unico punto.

Modifier.graphicsLayer(scaleX = scale, scaleY = scale, rotationZ = angle)

Traslare all'interno del layer

All'interno di graphicsLayer, imposti translationX e translationY a partire dall'offset. La trasformazione avviene senza imporre un costoso passaggio di layout.

translationX = offset.x; translationY = offset.y

Limitare la scala

Gli utenti possono pizzicare in modo estremo, quindi clamp la scala entro limiti ragionevoli con coerceIn. In questo modo il contenuto non scompare né riempie l'intero mondo.

scale = scale.coerceIn(0.5f, 5f)

Ordine delle operazioni

graphicsLayer applica prima la scale, poi la rotazione e infine la traslazione. Conoscere quest'ordine aiuta a prevedere la posizione del contenuto trasformato.

Centrato sul punto di rotazione

Per impostazione predefinita, le trasformazioni ruotano intorno al centro dell'elemento. Modifichi transformOrigin in graphicsLayer per eseguire zoom e rotazione intorno a un altro punto.

Modifier.graphicsLayer(transformOrigin = TransformOrigin(0f, 0f))

Verifica rapida

Come deve applicare il valore di zoom ricevuto allo stato della scala?

Riepilogo: la magia del multi-touch

Ha utilizzato detectTransformGestures per traslazione, zoom e rotazione, quindi li ha applicati tramite graphicsLayer con dei limiti. Ora il pinch-to-zoom è nelle sue mani. 🎉

Domande Frequenti

La lezione «Transform: pan, zoom e rotazione» è gratuita?

Sì — il testo completo di «Transform: pan, zoom e rotazione» è 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 «Transform: pan, zoom e rotazione»?

Supporti i gesti pinch e multitouch. 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 3 di 4.

Quanto tempo richiede la lezione «Transform: pan, zoom e rotazione»?

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