Обзор библиотеки Picasso - загрузка и кэширование изображений в Android

Обзор библиотеки Picasso — загрузка и кэширование изображений в Android

В этой статьей мы рассмотрим библиотеку Picasso — одно из самых популярных и удобных решений для загрузки и кэширования изображений в Android. 

Обзор библиотеки Picasso

Прежде всего давайте разберемся зачем нам вообще нужна библиотека для того, чтобы просто скачать изображение. Ответа на этот вопрос я бы дал всего тремя словами: Простота, Удобство, Оптимизация.

  • Простота использования Picasso состоит в том, что скачать картинку можно в 2 строчки кода.
  • Удобство в том, что нам не нужно делать думать о возможных проблемах и подводных камнях, связанных с загрузкой изображения.
  • Оптимизация — рациональное использование памяти, кэширование, трансформации изображения, возможность отмены загрузки и многое другое.

Все 3 слова тесно связаны между собой и по сути являются производными друг от друга, поэтому просто заменим их на Picasso 🙂 .

Библиотека является детищем команды Open Source разработчиков Square, которые создали такие шедевры как Retrofit, Dagger, Leakcanary и другие.

Функциональные возможности Picasso

Добавить библиотеку в проект можно в блоке зависимостей вашего файла build.gradle:

После чего в синхронизируйте проект, чтобы Gradle смог загрузить в кэш новую зависимость. Убедитесь, что ваш Gradle не настроен на работу в режиме Offline.

Загрузка изображения по ссылке

Чтобы скачать картинку по URL с помощью Picasso, у нас должен быть виджет ImageView (в него будем загружать изображение) или описан специальный объект Target (для хранения скаченого объекта в виде Bitmap) — этот способ рассмотрим в конце статьи.

Простой пример загрузки картинки по ссылке:

 В коде выше Picasso получает текущий контекст: with(context), скачивает картинку: load("адрес ссылки") и устанавливает ее в целевой виджет: into(imageView)

Также Picasso поддерживает загрузку изображений с ресурсов, файлов assets и контент провайдеров:

Обработка ошибок и временная картинка в Picasso

  • Мы загружаем изображение из Интернета, следовательно процесс займет некоторое время в зависимости от скорости интернета. Поэтому хорошим решением является показывать пользователю временное изображение (placeholder), пока картинка не загружена.
  • Библиотека Picasso также берет на себя ошибки, связанные с загрузкой изображения. Мы просто указываем какую картинку использовать, если неудалось скачать изображение по ссылке.

Смотрим на примере обработку ошибки и установку плейсхолдера:

Трансформации в Picasso: изменение размеров и вращение картинки

Также Picasso поддерживает обрезку картинки по центре centerCrop(), например:

Сохраняем изображение в виде Bitmap

В Picasso также есть возможность скачать картинку не в ImageView, а в объект Target и дальше работать с изображением в виде Bitmap:

В методе loadImage() Picasso загружает картинку в объект Target. В нем реализован метод onBitmapLoaded() — в нем мы можем работать с картинкой в виде Bitmap.

  • К плюсам библиотеки Picasso также можно отнести легковесность и прекрасную оптимизацию работы с памятью при загрузке изображений.
  • Ну а минусом Picasso является отсутствие поддержки GIF-анимаций.

Это далеко не все возможности Picasso. Больше информации найдете на странице библиотеки на GitHub.

Подписывайтесь на новые статьи по Java программированию и разработке под Android!

One thought to “Обзор библиотеки Picasso — загрузка и кэширование изображений в Android”

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

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