Carregamento e Cache de Imagem Com Universal Image Loader no Android

Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog. Você receberá um email de confirmação. Somente depois de confirma-lo é que poderei lhe enviar os conteúdos exclusivos.

Email inválido.
Blog /Android /Carregamento e Cache de Imagem Com Universal Image Loader no Android

Carregamento e Cache de Imagem Com Universal Image Loader no Android

Vinícius Thiengo
(5128) (18) (1)
Go-ahead
"Não podemos estar em modo de sobrevivência. Temos de estar no modo de crescimento."
Jeff Bezos
Kotlin Android
Capa do livro Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia
TítuloDesenvolvedor Kotlin Android - Bibliotecas para o dia a dia
CategoriasAndroid, Kotlin
AutorVinícius Thiengo
Edição
Ano2018
Capítulos19
Páginas1035
Acessar Livro
Treinamento Oficial
Android: Prototipagem Profissional de Aplicativos
CursoAndroid: Prototipagem Profissional de Aplicativos
CategoriaAndroid
InstrutorVinícius Thiengo
NívelTodos os níveis
Vídeo aulas186
PlataformaUdemy
Acessar Curso
Receitas Android
Capa do livro Receitas Para Desenvolvedores Android
TítuloReceitas Para Desenvolvedores Android
CategoriaDesenvolvimento Android
AutorVinícius Thiengo
Edição
Ano2017
Capítulos20
Páginas936
Acessar Livro
Código Limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas599
Acessar Livro
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Conteúdo Exclusivo
Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog.
Email inválido

Opa, blz?

Nesse vídeo mostro como realizar carregamento de imagens da Web e além de apresenta-las no screen do device do usuário salva-las também na memória do aparelho e SDCard para que as imagens continuem sendo carregadas mesmo quando não há mais conexão com a Internet. A lib open source utilizada é a Universal Image Loader que além de ser bem consistente (mais de três anos de lib) é muito simples de se utilizar. A lib nos fornece um grande conjunto de métodos para customização, mas acredito que os métodos relacionados a cache são os de maior importância, e apesar de podermos escolher qual cache utilizar (ou ambas) recomendo a utilização de ambas, memória e SDCard, caso sua APP começar a ter problemas de vazamento de memória não acredito que deixar apenas uma das opções lhe ajudará muito, nesse caso recomendo que você destrinche os métodos todos realicionados ao carregamento da imagem e as caches, pois a lib é quase toda reconfigurável. A lib Universal Image Loader nos permite trabalhar como algumas configurações de estilização da imagem, que apesar de serem simples chamadas métodos são as vezes trabalhos pesados internamente no Android, logo recomendo que qualquer trabalho na imagem que tenha configuração de qualidade, tamanho, crop, ... seja esses realizados no servidor que tem muito mais memória e processador para isso, caso contrário há o risco de Exception. No mais é isso, não tem muito o que falar, recomendo a lib para carregar imagens de servidores remotos, para carregar loca utiliza um simples ImageView, já é o suficiente.

O link para download do projeto se encontra logo abaixo no post

Segue link do vídeo do BaseAdapter para auxiliar no entendimento do vídeo acima:

Utilizando BaseAdapter Para Personalização Completa da ListView

Segue links das páginas da lib Universal Image Loader apresentadas no vídeo:

Página principal da lib no GitHub

Página de apresentação do fluxo de trabalho da lib

Página de informações úteis sobre a utilização da lib

Vlw

Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog.
Email inválido

Relacionado

Google Cloud Messaging (GCM) no AndroidGoogle Cloud Messaging (GCM) no AndroidAndroid
AutoCompleteTextView no Android, Entendendo e UtilizandoAutoCompleteTextView no Android, Entendendo e UtilizandoAndroid
AccountManager no Android, Entendendo e UtilizandoAccountManager no Android, Entendendo e UtilizandoAndroid
Vendendo Produtos e Inscrições Com Google In-App Billing no AndroidVendendo Produtos e Inscrições Com Google In-App Billing no AndroidAndroid

Compartilhar

Comentários Facebook (7)

Comentários Blog (11)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
jhonny Ferrari (1) (0)
22/10/2015
Thiengo to trabalhando em cima dessa aplicação,
http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/

e tenho salvado imagem no banco de dado, como posso fazer para ele ler?, tentei aplicar essa seu exemplo mas nao estou conseguindo
Responder
Vinícius Thiengo (1) (0)
24/10/2015
Fala Jhonny, blz?
Estou assumindo está salvando a imagem em um folder no servidor Web e então salvando somente o nome dela no database, correto? O que deve fazer é  retornar para a APP o caminho completo de acesso a imagem, exemplo: se ela está no folder imagens do servidor http://www.test.com.br , então o path completo de acesso seria: http://www.test.com.br /imagens/nomeDaImagem.png. Caso em que é uma imagem png. Tentou assim? Veja o uso da library Fresco para carregamento de imagens (http://www.thiengo.com.br/lib-fresco-para-carregamento-de-imagens-com-gifs-e-webps-animados-material-design-android-parte-12 ), recomendo ela ao invés da UIL. Abraço
Responder
JHONNY (1) (0)
06/11/2015
Aproveitando um pouco mais da sua sabedoria Thiengo, a aplicaçao funciona assim, quando sai a oferta da semana em um super mercado, o funcionario abre a tela de cadastro em php, ai cadastra o nome e o preço e coloco a foto, ex: nome: banana, preço: 1,00 foto: banana1.png, salva no banco mysql, como eu faria para buscar sem colocar a url, ele trazer a foto pelo ID dela, pq nao posso ficar criando url para cada foto
Responder
Vinícius Thiengo (0) (0)
07/11/2015
Jhonny, no caso foi salvo o nome da imagem no bd ou ela em tipo BLOB?

No primeiro caso vc não cria um url, a imagem vai estar em um diretório de seu server e então vc retornará o url do site com o path até o diretório da imagem junto ao nome da imagem, isso é inevitável se estiver com essa opção (que é a melhor).

Com o tipo BLOB e a imagem sendo salva no bd, vc pode enviar a imagem em bytes para o APP, então terá de utilizar algumas entidades para conversão e criar a imagem a partir dos bytes enviados.

Utilize o modo url com o Fresco (http://www.thiengo.com.br/lib-fresco-para-carregamento-de-imagens-com-gifs-e-webps-animados-material-design-android-parte-12 ), sem sombra de dúvidas uma excelente opção. Outra library que pode testar que é mais simples e tb eficiente é o Picasso (http://square.github.io/picasso/ ). Abraço
Responder
Ricardo (1) (0)
07/05/2015
Thiengo blz, Cara estou usando o Picasso para carregar as imagens , carrego varias imagens do servidor no listiview com loadmore, mais esta dando  Out of Memory como posso resolver ?
Responder
Vinícius Thiengo (0) (0)
08/05/2015
Fala Ricardo, blz?
Diminua o tamanho em bytes das imagens (uma forma de solucionar). Pode diminuir o tamanho (largura altura) da imagem e junto pode tb retirar um pouco de qualidade. Se não me engano, até 50% de qualidade a menos na imagem original o ser humano tem mta dificuldade para perdeber a perda de qualidade. Abraço
Responder
wiliam (2) (0)
27/03/2015
Ola thiengo, exelente aula. Me tira uma duvida Thiengo, esse carregamento dessas imagens q eu to fazendo aqui na minha app é muito pesado?


public Bitmap getIcon(String nomeIcon){

if(nomeIcon.equals("nenhum(a)")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_nenhum);

}else if(nomeIcon.equals("icon1")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon1);

}else if(nomeIcon.equals("icon2")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon2);

}else if(nomeIcon.equals("icon3")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon3);

}else if(nomeIcon.equals("icon4")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon4);

}else if(nomeIcon.equals("icon5")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon5);

}else if(nomeIcon.equals("icon6")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon6);

}else if(nomeIcon.equals("icon7")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon7);

}else if(nomeIcon.equals("icon8")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon8);

}else if(nomeIcon.equals("icon9")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon9);

}else if(nomeIcon.equals("icon10")){

fandomB = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon10);

}

return fandomB;
}

holder.icon.setImageBitmap(getIcon(iconsAdapter[position]) );


estou carregando varias imagens em uma lista e eu percebo q fica meio lento e as vezes da uma travada, você me recomendaria essa lib para eu fazer esse carregamento de uma maneira mais leve? Desd já obrigado cara. Abraços.
Responder
Vinícius Thiengo (1) (0)
27/03/2015
Fala Wilian, blz?
Utilize o Picasso (http://square.github.io/picasso/ ) ou o ImageLoader do Volley (esse último tende a ser mais rápido), já tive outros reclamando dessa lib tb. O Picasso não tenho vídeo, mas o ImageLoader Volley sim (http://www.thiengo.com.br/imageloader-com-a-lib-volley-no-android ). Abraço
Responder
Ronnie (1) (0)
12/12/2014
O que utilizar: O imageLoader da lib Volley ou o universal image loader?
Responder
Vinícius Thiengo (2) (0)
13/12/2014
Fala Ronnie, blz?
Eu recomendo ir de UIL se vc não for excepcional para implementar seu próprio cache no ImageLoader do Volley, mesmo se for ainda ficaria com o UIL. Abraço
Responder
13/12/2014
rs .. ok. Iniciarei pelo UIL. Valeu mesmo.
Responder