Трансформація

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

використовувати

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

зображення

Також є бібліотекаPicasso, призначена для асинхронного підвантаження зображень котів з мережі, ресурсів або файлової системи, їх кешування та відображення.

В Android Studio прописуємо залежність у Gradle (перевіряйте номер свіжої версії).

Зараз на сайті є нова версія з новим пакетом

Ось як просто завантажити картинку з мережі:

При завантаженні картинка кешується і при повторному запиті на завантаження бібліотека може дістати картинку з кешу, а не завантажувати з інтернету, що прискорює роботу програми. Якщо кеш буде переповнений або видалений користувачем, картина знову скачається з мережі. Дуже зручно.

Якщо ви зберігаєте великі зображення в ресурсах або на зовнішньому накопичувачі, рекомендується використовувати окремий процес для завантаження. Бібліотека вже налаштована працювати в асинхронному режимі, тому ви можете використовувати її й у випадках.

Не забувайте про метод бібліотекиfit(), який зменшує розмір картинки перед розміщенням уImageView. Це корисно для економії ресурсів, якщо вам насправді потрібна невелика картинка, а не оригінал.

Трансформація

У бібліотеки є спеціальний методtransform()для маніпуляцій із зображеннями. Вам потрібно створити власну реалізацію та передати її в метод. Наприклад, на сайті розробника наведено приклад кадрування зображення, колистворюється квадратна картинка по найменшій стороні.

Спочатку створюється окремий клас з інтерфейсомTransformation, який вимагає реалізувати два методиtransform()таkey().

Для наочності розмістимо два компонентиImageViewі подивимося на результат після натискання кнопки.

зображення

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

Пробуємо на цій картинці.

можливість

можливість

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

трансформація

Техніка, використовувана у прикладі, не дуже ефективна. Для таких цілей рекомендується використовувати шейдери. Наведений приклад класу.

У цьому прикладі використовується порожній конструктор без параметрів, що дорівнює значенню 0 з попереднього прикладу. Ви можете доопрацювати приклад, додавши можливість вказівки радіусу, як це реалізовано у цьому прикладі.

Нові можливості

У статті описано нові можливості для версії 2.4.

З'явилася можливість вбудувати власні обробники запитів, якщо у вас використовується нестандартна схема замість http, res тощо.

З'явилася можливість управління пріоритетами при запитах, щоб завантажити якесь зображення раніше за інших.

Щоб протестувати бібліотеку в бойових умовах, я написав додаток Коти Василя Ложкіна. Результатом задоволений.