Пока такие продвинутые решения, как WhatsApp, Viber, Telegram, Messenger все еще требуют достаточно больших затрат на реализацию, многие продукты, особенно MVP, нуждаются в куда более простых предложениях. Именно поэтому мы создали Open-source библиотеку под названием ChatKit.
ChatKit — это набор UI-элементов для простого создания чатов средней сложности. Библиотека спроектирована таким образом, чтобы пользователи могли с легкостью реализовать достаточно затратную по времени логику представления чатов, не испытывая проблем как в стилизации, так и в расширении стандартных возможностей.
Компоненты
Из коробки разработчикам доступны 3 основных компонента необходимых для создания чата:
- список диалогов пользователя;
- тред сообщений чата;
- поле для ввода и отправки сообщений.
Список диалогов включает в себя превью для одиночных и групповых чатов с различными вариантами отображения аватаров и имен, а также отображением счетчика непрочитанных сообщений. Он спроектирован специально для работы в режиме реального времени — элементы сортируются, автоматически используя дату последнего сообщения, а при поступлении новых сообщений — пользователь видит понятную анимацию сортировки.
Тред сообщений чата представляет собой список входящих и исходящих сообщений и по умолчанию поддерживает типы для текстовых сообщений и изображений, которые без труда могут быть расширены пользовательскими типами.
Самый простой элемент в этой троице — поле для ввода сообщений. Это небольшой компонент, созданный, чтобы можно было моментально интегрировать опцию отправки сообщений в продукт. Однако у него нет таких широких возможностей кастомизации, как у других описанных компонентов, потому что элементы такого вида могут кардинально изменять внешний вид. В таких случаях разработчику проще создать уникальный дизайн чата.
Также поддерживается подсветка номеров интерактивного текста (номеров телефона, e-mail адресов, ссылок, координат), режим множественного выбора (удобно для удаления и управления сообщениями), автоматическое разделение сообщений по датам, пагинация и т.п.
Стилизация
Мы уделили много внимания стилизации стандартных компонентов — с помощью всего пары атрибутов разработчик может полностью преобразить внешний вид элементов на тот, который наилучшим образом подходит дизайну разрабатываемого продукта.
Для этого, пользователь может указать фон для входящих и исходящих сообщений, размеры, стиль и цвет текста, времени и дат, формат для дат, отступы, формы аватаров и т.д. Для случаев, когда есть необходимость в более значительном изменении внешнего вида сообщения, предусмотрена возможность создания собственных файлов разметки и указания их как основных для каждого вида сообщений.
Также, нередки случаи, когда в чатах фигурируют не только текстовые соообщения и изображения, например, может появиться необходимость в голосовых сообщениях или отображении гео-точек. Для таких случаев также предусмотрена возможность добавления пользовательских типов сообщений. Необходимо лишь создать собственный файл разметки и обработчик данных для него. Остальное библиотека возьмет на себя. Проще простого!
Стоит отметить, что реализация практически не требует изменения используемых системой моделей, это еще больше упрощает процесс интеграции библиотеки в проект.
Приятный бонус — списки реализованы на основании RecyclerView, это обеспечивает высокое быстродействие и большую гибкость в работе с анимацией.
Команда проекта:
- Антон Б.
Android разработчик
- Александр К.
Android разработчик
- Александр
Руководитель отдела Mobile