Трансформация
Както знаете, известният художник Пабло Пикасо обичаше котки. Има снимка, потвърждаваща любовта му.
Художникът рисува няколко картини с котка. Един от тях.
Има и библиотекаPicasso, предназначена за асинхронно зареждане на изображения на котки от мрежата, ресурсите или файловата система, тяхното кеширане и показване.
В Android Studio пишем зависимостта в Gradle (проверете номера на най-новата версия).
Сега има нова версия на сайта с нов пакетимплементация 'com.squareup.picasso:picasso:2.71828', който е междинна опция за преминаване към 3.x клон. Някои извиквания на методи обаче са променени. Бъди внимателен.
Ето колко лесно е да изтеглите изображение от мрежата:
При изтегляне изображението се кешира и когато се повтори заявка за изтегляне, библиотеката може да получи изображението от кеша, вместо да го изтегля от интернет, което ускорява приложението. Ако кешът е пълен или изтрит от потребителя, картината ще бъде изтеглена отново от мрежата. Много удобно.
Ако съхранявате големи снимки в ресурси или на външно устройство, препоръчително е да използвате отделен процес за зареждане. Библиотеката вече е конфигурирана да работи в асинхронен режим, така че можете да я използвате и в тези случаи.
Не забравяйте за библиотечния методfit(), който намалява размера на изображението, преди да го постави вImageView. Това е полезно за спестяване на ресурси, ако наистина се нуждаете от малка снимка, а не от оригинала.
Трансформация
Библиотеката има специален методtransform()за манипулиране на изображения. Трябва да създадете своя собствена реализация и да я предадете на метода. Например уебсайтът на програмиста предоставя пример за изрязване на изображение, когатоот най-малката страна се създава квадратно изображение.
Първо се създава отделен клас с интерфейсаTransformation, който изисква внедряването на два методаtransform()иkey().
За по-голяма яснота нека поставим два компонентаImageViewи да видим резултата след натискане на бутона.
Друг пример за трансформация е повторното оцветяване на изображение. Android 5.0 представи възможността за преоцветяване на икони с вградени инструменти. За по-стари устройства можете да използвате библиотеката (взета от тук). Нека създадем нов клас:
Пробваме една и съща картина.
Ако зададете нулев радиус, размерите на изображението ще се използват за изчисляване на необходимите размери.
Техниката, използвана в примера, не е напълно ефективна. За такива цели се препоръчва използването на шейдъри. Пренаписан пример за клас.
Този пример използва празен конструктор без параметри, който е еквивалентен на стойността 0 от предишния пример. Можете да подобрите примера, като добавите възможност за указване на радиус, както е реализирано в този пример.
Нови възможности
Тази статия описва новите функции за версия 2.4.
Сега можете да вградите свои собствени манипулатори на заявки, ако използвате нестандартна схема вместо http, res и т.н.
Имаше възможност за управление на приоритетите за заявки за изтегляне на някои изображения преди други.
За да тествам библиотеката в бойни условия, написах приложение за Котките на Василий Ложкин. Доволен от резултата.