Android-библиотека для загрузки изображений Picasso

Picasso — очень мощная Android-библиотека для загрузки и кеширования изображений.

Библиотека разрабатывается и поддерживается компанией Square. Исходный код библиотеки открытый и находится здесь.

Преимущества Picasso

  1. Picasso упрощает процесс загрузки изображений из интернета или памяти смартфона. Загрузить изображения можно одной строкой кода
  2. Picasso автоматически кеширует изображение и при попытке повторной загрузки достает его из кеша.
  3. Picasso обрабатывает все ошибки связанные с загрузкой изображения. Вы можете установить заглушку, показывающуюся  при загрузке изображения или при ошибке.
  4. Picasso обрабатывает ошибку загрузки изображегия при отсутствии интернета

Использование библиотеки

Если вы хотите загружать изображения из интернета, то не забудьте прописать в манифесте разрешение на использование интернета:

<uses-permission android:name="android.permission.INTERNET" />

Загрузка изображения

Из интернета

Picasso.with(context) //передаем контекст приложения
   .load( "http://i.imgur.com/DvpvklR.png") //адрес изображения
   .into(imageView); //ссылка на ImageView

Из файла

File imagePath = new File("imagePath/image.png");//путь к изображению
Picasso.with(context) //передаем контекст приложения
    .load(imagePath)
    .into(imageView); //ссылка на ImageView

Из ресурсов

Picasso.with(context) //передаем контекст приложения
 .load(R.drawable.image)
 .into(imageView); //ссылка на ImageView

Из Uri

Uri uri = Uri.parse("http://i.imgur.com/DvpvklR.png");
Picasso.with(context) //передаем контекст приложения
 .load(uri)
 .into(imageView); //ссылка на ImageView

Картинка-заглушка

Picasso может отображать картинку-заглушку пока изображение загружается:
Picasso.with(context) //передаем контекст приложения
 .load("http://i.imgur.com/DvpvklR.png")
 .placeholder(R.drawable.image)
 .into(imageView); //ссылка на ImageView

Также можно установить картинку, показывающуюся при ошибке загрузки:

Picasso.with(context) //передаем контекст приложения
 .load("http://i.imgur.com/DvpvklR.png")
 .placeholder(R.drawable.image)
 .error( R.drawable.error)
 .into(imageView); //ссылка на ImageView

Трансформация изображения

Изменение размера

Picasso.with(context)
    .load("http://i.imgur.com/DvpvklR.png")
    .resize(50, 50)
    .into(imageView)

Callback

Если вам нужно выполнить какие-нибудь действия после загрзки картинки, то вы можете установить слушатель:

Picasso.with(context)
 .load(R.drawable.image)
 .placeholder(R.drawable.placeholder)
 .error(R.drawable.error)
 .fit()
 .into(imageView, callBack);

Callback callBack = new Callback(){

    @Override
    public void onSuccess(){
        Toast.makeText(context, "Картинка загрузилась", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onError(){

    }
};

Debug-индикаторы

Если вам во время разработки нужно знать откуда картинка была загружена, то вы можете включить  индикаторы источника изображения:

Picasso.with(context).setIndicatorsEnabled(true);

Библиотека на GitHub: Picasso.

Исходники примера: Picasso.

Комментарии:

6 комментариев

  1. bunrit Ответить

    А как выкрутиться если необходимо загрузить 500 изображений? Или, например, чтобы автоматически загружало новые файлы?

    • Admin АвторОтветить

      1.Если картинки находятся на собственном сервере, то можно изменять их размер там же, а потом грузить через Picasso.
      2. О каких файлах вы говорите?

  2. Марат Ответить

    Могу ли я загрузить изображение с помощью этой библиотеки не в ImageView, а в TextView?
    Если как то хитро прикрутить Spannable например…

  3. Игорь Ответить

    Как дать понять Picasso что на сервере по указанной ссылке находится уже другая картинка? (путь и название файла на сервере не изменилось, а толлько сама картинка)
    без отключения кеширования

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *