O que são Glide e Coil e para que servem?
\n\nNo desenvolvimento Android moderno, carregar e exibir imagens da rede, arquivos locais ou recursos é uma das tarefas mais comuns. No entanto, simplesmente baixar uma imagem e mostrá-la em um ImageView não é suficiente. É necessário considerar vários detalhes: cache (para não gastar tráfego), tratamento de erros (se a imagem não carregar), transformações (avatares redondos, desfoque), suporte a GIF e vídeo, além de animações suaves de aparecimento.
Glide e Coil são as duas bibliotecas mais populares para carregamento de imagens em Kotlin/Android. Elas resolvem todos esses problemas "prontos para uso".
\n\n- \n
- Glide — uma biblioteca poderosa e madura do Google (parcialmente). Suporta GIF, vídeo, transformações, animações. Possui uma enorme comunidade. \n
- Coil — mais moderna, leve e escrita totalmente em Kotlin usando corrotinas. Integra-se perfeitamente com Jetpack Compose. \n
Neste artigo, abordaremos ambas as bibliotecas, pois elas resolvem as mesmas tarefas, mas de maneiras diferentes. Você poderá escolher a que melhor se adequa ao seu projeto.
\n\nInstalação
\n\nAdicione as dependências no arquivo build.gradle.kts (nível do módulo app):
Para Glide:
\ndependencies {\n implementation("com.github.bumptech.glide:glide:4.16.0")\n kapt("com.github.bumptech.glide:compiler:4.16.0") // para GlideApp\n}\n\nPara Coil:
\ndependencies {\n implementation("io.coil-kt:coil:2.6.0")\n // Se estiver usando Compose:\n implementation("io.coil-kt:coil-compose:2.6.0")\n}\n\nApós adicionar, sincronize o projeto (Sync Now).
\n\nInício rápido
\n\nVamos carregar uma imagem simples da internet em um ImageView.
Exemplo com Glide:
\n// Em Activity ou Fragment\nval imageView: ImageView = findViewById(R.id.my_image_view)\nval url = "https://example.com/image.jpg"\n\nGlide.with(this)\n .load(url)\n .into(imageView)\n\nExemplo com Coil:
\n// Em Activity ou Fragment\nval imageView: ImageView = findViewById(R.id.my_image_view)\nval url = "https://example.com/image.jpg"\n\nimageView.load(url)\n\nComo você pode ver, o Coil oferece uma sintaxe ainda mais concisa através da função de extensão load().
Métodos e funções principais
\n\nAbaixo estão os principais métodos para trabalhar com imagens. Para cada método, mostrarei exemplos para ambas as bibliotecas.
\n\n1. load() — Carregamento de imagem
\nO que faz: Método principal que aceita a fonte da imagem (URL, URI, File, Drawable, Bitmap).
\nParâmetros:
\n- \n
url: String— link para a imagem. \n uri: Uri— URI local. \n file: File— arquivo. \n resourceId: Int— ID do recurso (R.drawable...). \n
Exemplo (Glide):
\nGlide.with(this)\n .load("https://example.com/photo.png")\n .into(imageView)\nExemplo (Coil):
\nimageView.load("https://example.com/photo.png")\n\n2. placeholder() — Imagem de placeholder
\nO que faz: Mostra uma imagem temporária enquanto a imagem principal está carregando.
\nParâmetros:
\n- \n
placeholder: Int— ID do recurso drawable. \n
Exemplo (Glide):
\nGlide.with(this)\n .load(url)\n .placeholder(R.drawable.ic_loading)\n .into(imageView)\nExemplo (Coil):
\nimageView.load(url) {\n placeholder(R.drawable.ic_loading)\n}\n\n3. error() — Imagem em caso de erro
Também na biblioteca
Autorização e Autenticação em Java: Spring Security e JWT
Monitoramento de aplicações Kotlin: biblioteca Ktor Metrics e Micrometer
Filas de Tarefas em Java: Visão Geral e Implementação com java.util.concurrent
Playwright para JavaScript (Node.js): guia completo com exemplos