Трансформація
Як відомо, знаменитий художник Пабло Пікассо любив котів. Є фотографія, що підтверджує його кохання.

Художник намалював кілька картин із котом. Одна з них.

Також є бібліотекаPicasso, призначена для асинхронного підвантаження зображень котів з мережі, ресурсів або файлової системи, їх кешування та відображення.
В Android Studio прописуємо залежність у Gradle (перевіряйте номер свіжої версії).
Зараз на сайті є нова версія з новим пакетом
Ось як просто завантажити картинку з мережі:
При завантаженні картинка кешується і при повторному запиті на завантаження бібліотека може дістати картинку з кешу, а не завантажувати з інтернету, що прискорює роботу програми. Якщо кеш буде переповнений або видалений користувачем, картина знову скачається з мережі. Дуже зручно.
Якщо ви зберігаєте великі зображення в ресурсах або на зовнішньому накопичувачі, рекомендується використовувати окремий процес для завантаження. Бібліотека вже налаштована працювати в асинхронному режимі, тому ви можете використовувати її й у випадках.
Не забувайте про метод бібліотекиfit(), який зменшує розмір картинки перед розміщенням уImageView. Це корисно для економії ресурсів, якщо вам насправді потрібна невелика картинка, а не оригінал.
Трансформація
У бібліотеки є спеціальний методtransform()для маніпуляцій із зображеннями. Вам потрібно створити власну реалізацію та передати її в метод. Наприклад, на сайті розробника наведено приклад кадрування зображення, колистворюється квадратна картинка по найменшій стороні.
Спочатку створюється окремий клас з інтерфейсомTransformation, який вимагає реалізувати два методиtransform()таkey().
Для наочності розмістимо два компонентиImageViewі подивимося на результат після натискання кнопки.

Інший приклад трансформації – перефарбування зображення. Android 5.0 з'явилася можливість перефарбовувати значки вбудованими засобами. Для старих пристроїв можна скористатися бібліотекою (взято звідси). Створимо новий клас:
Пробуємо на цій картинці.


Якщо задати нульовий радіус, будуть використовуватися розміри картинки для обчислення потрібних розмірів.

Техніка, використовувана у прикладі, не дуже ефективна. Для таких цілей рекомендується використовувати шейдери. Наведений приклад класу.
У цьому прикладі використовується порожній конструктор без параметрів, що дорівнює значенню 0 з попереднього прикладу. Ви можете доопрацювати приклад, додавши можливість вказівки радіусу, як це реалізовано у цьому прикладі.
Нові можливості
У статті описано нові можливості для версії 2.4.
З'явилася можливість вбудувати власні обробники запитів, якщо у вас використовується нестандартна схема замість http, res тощо.
З'явилася можливість управління пріоритетами при запитах, щоб завантажити якесь зображення раніше за інших.
Щоб протестувати бібліотеку в бойових умовах, я написав додаток Коти Василя Ложкіна. Результатом задоволений.