0Pricing
Android Academy · Lezione

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 arrotondati
  • BlurTransformation(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

  1. Retrofit e API REST
  2. Caricamento di immagini con Coil
  3. Gestione degli errori e UX
  4. Notifiche push
  5. WorkManager e attività in background
  6. Pubblicazione sul Play Store
← Torna a Android Academy