Glide: o que é, biblioteca de imagens e uso no Android

Autor: IT Sectr Publicado: 2026-05-05 Tempo de leitura: 8 min

Glide é uma biblioteca para carregar imagens no Android, apoiada pelo Google através do projeto Bumptech. A biblioteca fornece carregamento eficiente de imagens, animações GIF e quadros de vídeo com gerenciamento automático de memória. De acordo com o repositório do Glide no GitHub, o projeto é usado por mais de 200.000 aplicativos. O Glide é recomendado pelo Google como a biblioteca preferida para carregar gráficos no Android.

Pontos principais

  • Glide — biblioteca de carregamento de imagens do Google com suporte a GIF e quadros de vídeo
  • Cache de três níveis: memória, disco e recursos ativos para máxima velocidade
  • Ciclo de vida — Glide pausa automaticamente as requisições quando uma Activity é pausada
  • GIF e WebP animados são suportados nativamente sem plugins adicionais
  • Thumbnail permite mostrar primeiro uma versão reduzida e depois a versão completa

O que é Glide?

Glide é uma biblioteca para carregamento rápido e eficiente de imagens, GIFs animados e quadros de vídeo em aplicativos Android. O projeto é desenvolvido pela Bumptech sob a égide do Google e é amplamente utilizado em aplicativos oficiais do Google.

A arquitetura interna do Glide é construída em uma abordagem baseada em componentes: o Engine gerencia a execução de requisições, o DecodeJob é responsável pela decodificação e o ResourceDecoder converte dados brutos em Bitmap ou Drawable. Cada etapa pode ser personalizada através de módulos e registros, tornando o Glide uma biblioteca extremamente flexível para formatos de imagem não padronizados.

Ao contrário de muitos concorrentes, o Glide foi projetado desde o início levando em conta as especificidades do Android: ciclo de vida de Activity e Fragment, rotações de tela, mudanças de configuração. A biblioteca pausa e retoma automaticamente os carregamentos dependendo do estado do componente.

De acordo com o Android Developers, o Glide é a biblioteca recomendada para carregamento de imagens na documentação oficial do Google. É usado no Google Play, Google Maps e outros produtos da empresa, confirmando sua confiabilidade e desempenho.

A principal diferença entre o Glide e as alternativas é o redimensionamento automático de imagens para o tamanho do ImageView. Enquanto o Picasso carrega a imagem em resolução total e depois a redimensiona, o Glide decodifica o arquivo diretamente no tamanho necessário. Isso reduz o consumo máximo de memória e acelera a exibição em listas com diferentes tamanhos de célula.

Principais recursos do Glide

Glide fornece um amplo conjunto de funções para trabalhar com imagens, cobrindo cenários simples e complexos de carregamento de conteúdo.

Suporte a GIF e WebP animados

GIF e WebP animados são carregados e exibidos pelo Glide tão facilmente quanto imagens estáticas. A biblioteca detecta automaticamente o formato pelo tipo MIME e decodifica a animação, exibindo quadros em uma thread em segundo plano. Os métodos asGif e asBitmap estão disponíveis para controle de reprodução.

Integração com o ciclo de vida

Glide se vincula automaticamente ao ciclo de vida de Activity, Fragment e View. Quando uma Activity é pausada, os carregamentos são suspensos; quando destruída, são cancelados. Isso evita vazamentos de memória e carregamento de imagens para telas já fechadas. A integração funciona através do suporte a LifecycleOwner.

Carregamento de quadros de vídeo

Glide pode extrair quadros de vídeo por URL ou caminho local. O método asBitmap() em combinação com load() é usado para URIs de vídeo. O Glide seleciona automaticamente um quadro-chave ou um quadro em um timestamp especificado. Isso é útil para exibir prévias de vídeo.

Geração e configuração do GlideApp

GlideApp é uma classe gerada que fornece uma API estendida baseada na configuração do AppGlideModule. Permite usar métodos indisponíveis no Glide.with padrão: carregamento com opções personalizadas padrão, integração com bibliotecas e transformações predefinidas. A geração requer a anotação @GlideModule em uma classe que estende AppGlideModule.

Como funciona o Glide?

Glide usa uma arquitetura em múltiplas camadas com motor, decodificadores, transformações e cache. Cada requisição passa por uma cadeia de manipuladores que otimizam o carregamento para um ImageView específico.

Arquitetura e pipeline

Quando into(view) é chamado, o Glide verifica o cache: recursos ativos, cache em memória, cache em disco e só então a rede. A imagem é automaticamente redimensionada para o tamanho do ImageView de destino levando em conta a densidade da tela e o scaleType. Isso reduz o uso de memória — uma vantagem chave do Glide.

java
Glide.with(context)
    .load("https://example.com/image.jpg")
    .placeholder(R.drawable.loading)
    .error(R.drawable.error)
    .override(400, 300)
    .centerCrop()
    .into(imageView)

Instalação e configuração do Glide

A instalação do Glide é feita via Gradle. A biblioteca requer configuração através do AppGlideModule para geração de API. A versão mínima da Android API é 21.

Adicionando dependências

No build.gradle, adicione o Glide com o processador de anotações kapt para geração da API GlideApp. Para Kotlin, use kapt em vez de annotationProcessor. A versão 4.16+ do Glide funciona de forma estável com o Android Gradle Plugin 8.x.

groovy
dependencies {
    implementation "com.github.bumptech.glide:glide:4.16.0"
    annotationProcessor "com.github.bumptech.glide:compiler:4.16.0"
}

// Use kapt para Kotlin
// kapt "com.github.bumptech.glide:compiler:4.16.0"

Criando AppGlideModule

AppGlideModule é um componente obrigatório para configurar o Glide. Ele permite definir o tamanho do cache, um HttpStack personalizado e registrar decodificadores próprios. O módulo é escaneado pelo Glide na inicialização do aplicativo. A anotação @GlideModule o registra automaticamente.

java
@GlideModule
public class MyGlideModule extends AppGlideModule {
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        int diskCacheSize = 250 * 1024 * 1024;
        builder.setDiskCache(
            new DiskLruCacheFactory(cacheDir.getPath(), diskCacheSize)
        );
    }
}

Exemplos de uso do Glide

Os exemplos abaixo demonstram cenários típicos: carregamento de imagens, trabalho com GIF e extração de quadros de vídeo.

Carregando uma imagem com placeholder

O carregamento básico via Glide.with().load().into() — código mínimo para exibir uma imagem da rede. O Glide se ajusta automaticamente ao tamanho do ImageView. O placeholder é mostrado durante o carregamento e error em caso de falha.

java
Glide.with(fragment)
    .load("https://example.com/photo.jpg")
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .skipMemoryCache(true)
    .diskCacheStrategy(DiskCacheStrategy.NONE)
    .into(imageView)

Carregando uma imagem GIF

Um GIF é carregado da mesma forma que uma imagem estática — o Glide detecta automaticamente o formato pelo tipo de conteúdo. Para forçar o carregamento como imagem estática, use asBitmap(); para GIF, use asGif(). O Glide decodifica eficientemente apenas os quadros visíveis.

java
Glide.with(context)
    .asGif()
    .load("https://example.com/animation.gif")
    .into(imageView)

// Carregar o primeiro quadro de um GIF como imagem estática
Glide.with(context)
    .asBitmap()
    .load("https://example.com/animation.gif")
    .into(imageView)

Carregando um quadro de vídeo

Um quadro de vídeo é extraído pelo Glide de uma URI de vídeo local ou remota. Por padrão, o Glide carrega o quadro-chave. Para especificar um timestamp específico, use frameMillis. Isso é útil para exibir prévias em uma galeria de vídeos.

java
String videoUrl = "https://example.com/video.mp4";

Glide.with(context)
    .asBitmap()
    .load(videoUrl)
    .override(200, 200)
    .into(imageView)

Otimização do Glide para listas grandes

A otimização do Glide para RecyclerView é uma habilidade crítica ao desenvolver aplicativos com grande quantidade de imagens. A configuração adequada evita travamentos e erros OOM.

Um dos principais recursos do Glide é a integração com RecyclerView através do RecyclerViewPreloader. Este componente analisa a velocidade de rolagem e a direção, pré-carregando imagens que aparecerão na tela em alguns itens. Para usar o pré-carregador, você precisa implementar a interface PreloadSizeProvider e passá-la ao construtor junto com o ImageView de destino.

Usar o método override() com dimensões exatas do ImageView acelera significativamente o carregamento. Quando o Glide sabe o tamanho exato do destino, ele pode decodificar a imagem diretamente na resolução necessária, pulando a etapa de redimensionamento. Isso reduz o tempo de decodificação e o consumo máximo de memória em 30–40%.

Para feeds com conteúdo heterogêneo, use diferentes RequestOptions para cada tipo de item. Por exemplo, para imagens de banner grandes, você pode definir override(1200, 600) e qualidade RGB_565, enquanto para avatares — override(200, 200) e arredondamento via transform. Essa abordagem usa os recursos de forma ideal para cada tipo de conteúdo.

Tratamento de erros de carregamento

Glide oferece opções flexíveis para tratamento de erros através de imagens de erro e RequestListener personalizado. O RequestListener permite reagir ao carregamento bem-sucedido ou à falha — registrar erros ou enviar análises. Você também pode configurar um fallback — uma imagem mostrada quando load() recebe null em vez de uma URL.

Use RecyclerViewPreloader para pré-carregar imagens antes que o usuário role até elas. O Glide suporta integração com RecyclerView através de um pré-carregador que analisa a velocidade de rolagem e carrega imagens antecipadamente.

A multiplicação de thumbnail permite mostrar primeiro uma versão reduzida da imagem e depois carregar a versão completa. Chamar thumbnail(0.25f) carrega uma versão de 25% do tamanho que é exibida imediatamente, enquanto a imagem em tamanho completo é carregada depois. Isso cria a impressão de carregamento instantâneo.

Para adaptadores de lista, use .override() com dimensões exatas do ImageView para que o Glide não redimensione a imagem toda vez. Isso reduz a carga da CPU e o consumo de memória. O tamanho do cache é selecionado experimentalmente, mas 250 MB para disco e 20% da memória disponível são um bom ponto de partida.

Perguntas frequentes

Qual a diferença entre Glide e Picasso?

Glide suporta GIF, quadros de vídeo e WebP animados. Ele gerencia a memória de forma mais eficiente e é recomendado pelo Google. Picasso é menor em tamanho e mais simples de usar. Para projetos complexos, escolha Glide.

Como o Glide se vincula ao ciclo de vida?

Glide aceita um LifecycleOwner (Fragment, Activity) ou View. A biblioteca rastreia automaticamente o estado através do LifecycleObserver: pausa o carregamento ao pausar e cancela ao destruir, evitando vazamentos.

Posso carregar apenas o primeiro quadro de um GIF no Glide?

Sim, use asBitmap() antes de load(). O Glide carregará o GIF como uma imagem estática e mostrará apenas o primeiro quadro. Isso é útil para listas onde a animação GIF é indesejável por questões de desempenho.

Como o cache do Glide afeta o desempenho?

O cache do Glide consiste em três níveis: recursos ativos (em uso atualmente), memória (cache LRU) e disco (LruCache). Imagens carregadas do cache são exibidas instantaneamente. O cache é limpo automaticamente quando a memória está baixa.

Como configurar um cliente HTTP personalizado para o Glide?

Um cliente HTTP personalizado é registrado através do OkHttpUrlLoader no AppGlideModule. Sobrescreva registerComponents e registre seu OkHttpClient. Isso permite adicionar interceptadores, certificados e timeouts personalizados.

Resumo

  • Glide — biblioteca de carregamento de imagens do Google com suporte a GIF e quadros de vídeo
  • Cache de três níveis fornece acesso instantâneo a imagens carregadas repetidamente
  • Ciclo de vida pausa e cancela requisições automaticamente
  • Quadros de vídeo são extraídos de vídeos locais e remotos via asBitmap
  • Thumbnail multiplicado acelera a exibição de imagens em listas
  • Recomendação do Google torna o Glide o padrão para aplicativos Android
  • RecyclerViewPreloader pré-carrega imagens antes da rolagem do usuário

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também