Caricamento di immagini con Coil
Carichi e memorizzi nella cache in modo efficiente le immagini di rete con Coil. Applichi trasformazioni (CircleCrop, RoundedCorners) e gestisca segnaposto ed errori.
Caricamento di immagini con Coil è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 2 di 6. 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 Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 6 lezioni in totale.
Perché usare una libreria per le immagini?
Caricare immagini da Internet è sorprendentemente complesso:
- Scaricarle in un thread in background
- Memorizzarle nella cache su disco e in memoria
- Decodificarle in modo efficiente (evitando arresti anomali per OOM)
- Mostrare un segnaposto durante il caricamento
- Gestire gli errori (link non valido, assenza di rete)
Coil gestisce tutto questo con una sola riga di codice.
Che cos'è Coil?
Coil (Coroutine Image Loader) è una moderna libreria Android per il caricamento delle immagini, sviluppata per Kotlin e le coroutine.
- Leggera — più piccola di Glide o Picasso
- Basata su Kotlin, con supporto per le coroutine
- Consapevole del ciclo di vita — annulla automaticamente i caricamenti
- Supporta GIF, SVG e fotogrammi video
Aggiunta di Coil
Aggiunga la dipendenza in app/build.gradle:
// app/build.gradle
dependencies {
implementation 'io.coil-kt:coil:2.6.0'
}
// Also make sure internet permission is in AndroidManifest.xml:
// <uses-permission android:name="android.permission.INTERNET" />Caricamento di base delle immagini
Carichi un'immagine in una ImageView con una sola riga:
import coil.load
// In your Activity or Adapter:
binding.ivAvatar.load("https://picsum.photos/200")
// With a placeholder and error image:
binding.ivAvatar.load("https://picsum.photos/200") {
placeholder(R.drawable.ic_placeholder)
error(R.drawable.ic_error)
crossfade(true) // smooth fade-in animation
}Caricamento in un RecyclerView
Coil annulla automaticamente i caricamenti in sospeso quando un ViewHolder viene riciclato, impedendo che vengano visualizzate immagini sbagliate nelle righe sbagliate:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val post = getItem(position)
holder.tvTitle.text = post.title
holder.ivCover.load(post.imageUrl) {
placeholder(R.drawable.ic_image_placeholder)
error(R.drawable.ic_broken_image)
crossfade(300) // 300ms fade-in
size(200, 200) // resize to 200×200 pixels
}
}Trasformazioni
Applichi trasformazioni alle immagini caricate:
CircleCropTransformation()— immagine circolare (perfetta per gli avatar)RoundedCornersTransformation(radius)— angoli arrotondatiBlurTransformation(context, radius)— effetto sfocato
Esempio di trasformazione
Visualizzi un avatar utente circolare:
import coil.load
import coil.transform.CircleCropTransformation
import coil.transform.RoundedCornersTransformation
// Circular avatar
binding.ivAvatar.load(user.profileImageUrl) {
transformations(CircleCropTransformation())
placeholder(R.drawable.ic_default_avatar)
error(R.drawable.ic_default_avatar)
}
// Rounded corners on a card image
binding.ivCover.load(post.coverUrl) {
transformations(RoundedCornersTransformation(16f))
crossfade(true)
}Comportamento della cache
Coil memorizza automaticamente le immagini in cache a due livelli:
- Cache in memoria — la più veloce, viene svuotata quando l'app viene terminata
- Cache su disco — persiste tra gli avvii dell'app, 250 MB per impostazione predefinita
Se lo stesso URL viene caricato due volte, il secondo caricamento proviene dalla cache: non viene effettuata alcuna richiesta di rete.
Caricamento da origini diverse
Coil può caricare immagini da diverse origini, non solo dagli URL:
// From a URL (most common)
imageView.load("https://example.com/image.jpg")
// From a URI (e.g., gallery image)
imageView.load(uri)
// From a drawable resource
imageView.load(R.drawable.my_image)
// From a File
imageView.load(File("/sdcard/photo.jpg"))
// From a bitmap
imageView.load(bitmap)Verifica rapida
Quale trasformazione di Coil userebbe per visualizzare come cerchio la foto del profilo di un utente?
Riepilogo: caricamento delle immagini con Coil
Ora può visualizzare in modo efficiente le immagini provenienti dalla rete:
- Aggiungere Coil con una sola dipendenza Gradle
imageView.load(url) { }— caricare con una sola riga- Immagini segnaposto e di fallback in caso di errore
- Trasformazioni: CircleCrop, RoundedCorners, Blur
- Memorizzazione automatica nella cache in memoria e su disco
- Compatibile con URL, URI, file, drawable e bitmap
Prossimo argomento: gestire gli errori con eleganza e fornire agli utenti un feedback efficace.
Domande Frequenti
La lezione «Caricamento di immagini con Coil» è gratuita?
Sì — il testo completo di «Caricamento di immagini con Coil» è 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 Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 6 lezioni in totale.
Cosa imparerò in «Caricamento di immagini con Coil»?
Carichi e memorizzi nella cache in modo efficiente le immagini di rete con Coil. Applichi trasformazioni (CircleCrop, RoundedCorners) e gestisca segnaposto ed errori. Eserciti Android 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 Android Academy?
Non è richiesta alcuna esperienza precedente. Android 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 6.
Quanto tempo richiede la lezione «Caricamento di immagini con Coil»?
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 Android Academy?
Sì. Ogni lezione Android 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
- Retrofit e API REST
- Caricamento di immagini con Coil
- Gestione degli errori e UX
- Notifiche push
- WorkManager e attività in background
- Pubblicazione sul Play Store