Android-бібліотека для повноекранного перегляду зображень

FrescoImageViewer. Android-library for Full Screen Image View

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

Одним із таких шаблонів уже майже є перегляд зображень. Коли ми бачимо зображення на весь екран, ми очікуємо, що його можна збільшити і розглянути в деталях за допомогою відповідних жестів. Ба більше, якщо ми цього не виявимо - нам здасться, що щось працює не так. Вірно? До цього набору останнім часом все частіше додається жест, за допомогою якого можна швидко закрити режим перегляду. Для цього потрібно "змахнути" зображення вгору (як, наприклад, це реалізовано в додатку VK).

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

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

За основу було вирішено взяти PhotoDraweeView, в якій добре реалізована логіка збільшення, але некоректно працювало горизонтальне перемикання між зображеннями.

Ссылка на демо-гифку PhotoDraweeView

Дописавши перемикання між зображеннями і можливість закривати переглядач жестом, ми вирішили додати анімацію загасання фону. Також подбали про простоту використання бібліотеки, щоб розробники в один рядок коду змогли виконувати поставлене завдання:

new ImageViewer.Builder(context, images).show();

І ось що з цього вийшло:

Демка просмотрщика

Проаналізувавши можливі кейси, ми додали можливість накладання різних елементів, які можна прибрати/показати простим одиничним тапом по картинці. Це дає розробнику більше свободи в налаштуванні переглядача, які й без того дуже гнучкі завдяки пристрою Fresco.

Демка кастомизации

Маючи ці можливості, бібліотеку можна вільно застосовувати у всіх додатках, в яких необхідна функція перегляду, а як показує практика - це досить часта вимога. А маючи у себе в арсеналі це рішення, можна не замислюючись застосовувати цю техніку скрізь, де це потрібно без зайвих витрат.

Ось таким ось чином ми зробили свій внесок в екосистему Android, тим самим трохи спростивши життя розробникам і самим собі :)



FrescoImageViewer на Github сторінці