Бібліотека ChatKit

У світі iOS-розробки є всім відома бібліотека JSQMessagesViewController, яка допомагає iOS-розробникам без особливих зусиль реалізувати UI чату у своїх додатках. На жаль, Android-розробники позбавлені такого чудового інструменту. Тому ми поставили собі за мету надати розробникам Android широкі можливості для створення швидкого і привабливого користувацького інтерфейсу для чатів у своїх додатках.

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

Особливості:

  • Готове до вживання, тобто вже розроблене рішення для швидкої реалізації;
  • Повністю настроювані макети - встановлення стилів із коробки (використовуйте власні кольори, текстові зображення, розтяжки, селектори та розміри) або ж створення власної користувацької розмітки та/або холдерів для унікальної поведінки;
  • Список діалогів, включно з тет-а-тет і груповими чатами, маркерами для непрочитаних повідомлень і переглядом останніх повідомлень користувача;
  • Список повідомлень (вхідних і вихідних) з посторінковою хронологією і вже розрахованими заголовками дат;
  • Різні аватари без конкретної реалізації завантаження зображень - ви можете використовувати будь-яку бібліотеку на свій смак;
  • Режим вибору для взаємодії з повідомленнями;
  • Легке форматування дат;
  • Ваші власні моделі для діалогів і повідомлень. Конвертації не потрібно;
  • Готове до використання подання введення повідомлень;
  • Користувацькі анімації (відповідно до використання RecyclerView).

Для реалізації чату розробнику надається три компоненти:

1. DialogsList

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

DialogsList

2. MessageList

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

MessageList

3. MessageInput

MessageInput є допоміжним компонентом для введення текстових повідомлень, він підтримує просту перевірку і обробляє всі стани кнопки "відправити". Крім того, він підтримує достатньо атрибутів для стилізації зовнішнього вигляду.

MessageInput

У всіх компонентів є можливість стилізації за допомогою xml-атрибутів.

За допомогою атрибутів у DialogsList ми можемо змінювати окремо для прочитаних і непрочитаних діалогів: колір фону елемента списку, розмір шрифту, колір і стиль тексту для заголовка діалогу, останнього повідомлення, дати останнього повідомлення. А також розміри аватара діалогу і розміри аватара автора повідомлення (тільки для групових чатів), налаштування роздільника між елементами (зовнішній вигляд, колір, відступи).

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

Використовуючи доступні атрибути віджета MessageInput, ми можемо змінити колір і розмір тексту та підказки введення, максимальну кількість дозволених рядків, розмір і відступ кнопки "відправити", а також її значок і фон.

Але що, якщо вам потрібно не тільки змінити зовнішній вигляд елементів, а й їхнє положення? Це не має значення, тому що ви можете створити свій власний макет! Єдина умова - ідентифікатори елементів повинні відповідати ідентифікаторам за замовчуванням, а типи віджета не повинні викликати виняток класу ClassCastException (тобто, бути того ж типу або типом підкласу).

Приклад кастомізації зміни макета MessageList:

Chat custom layout

Іноді відображення тексту повідомлення недостатньо. Наприклад, вам потрібно додати статус обробки повідомлення та реакцію на повідомлення (як у Slack). Звичайно, для цього вам потрібно створити свій власний макет, але ви не можете це зробити без зміни логіки ViewHolder. Тому в нашій бібліотеці є можливість використання свого власного ViewHolder для елементів.

Ознайомитися з документацією і подивитися приклади використання даного рішення ви можете на нашій GitHub-сторінці бібліотеки.