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 comments

  1. bunrit Reply

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

    • Admin Post authorReply

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

  2. Марат Reply

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

  3. Erkin Reply

    А как загрузить две картинки рядом

  4. Игорь Reply

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

    • Admin Post authorReply

      Хм, если честно, не знаю, не сталкивался с этим.

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

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

9 + 5 =