Окно выбора эмодзи – это решение для пользовательского интерфейса, которое предлагает современный внешний вид, актуальные эмодзи и простоту использования. Пользователи могут просматривать и выбирать эмодзи и их варианты, а также выбирать из недавно использованных эмодзи.
Благодаря этой библиотеке приложения из разных источников могут предоставлять пользователям единый набор эмодзи, а разработчикам не нужно создавать и поддерживать собственное окно выбора эмодзи с нуля.
Функции
В окне выбора эмодзи есть следующие функции:
Актуальные эмодзи
Недавно выпущенные эмодзи выборочно добавляются в окно выбора эмодзи. Библиотека Emoji Picker совместима с несколькими версиями Android и устройствами.
Прикрепленные варианты
Нажмите и удерживайте эмодзи, чтобы открыть меню вариантов, например с разными полами или цветами кожи. Выбранный вариант сохраняется в окне выбора эмодзи, а последний выбранный вариант используется на главной панели.
С помощью этой функции пользователи могут отправлять предпочитаемые варианты эмодзи одним нажатием.
Недавние эмодзи
RecentEmojiProvider отвечает за эмодзи в категории Недавние. В библиотеке есть поставщик недавних эмодзи по умолчанию, который подходит для большинства случаев:
- Все выбранные эмодзи сохраняются в общих настройках для каждого приложения.
- В окне выбора отображается не более трех строк выбранных эмодзи без повторов в обратном хронологическом порядке.
Если вас устраивает такой режим работы по умолчанию, то использовать setRecentEmojiProvider() не нужно.
Однако вам может потребоваться настроить поведение поставщика. Вот некоторые распространенные ситуации:
- Вы хотите хранить разные выбранные эмодзи для каждого аккаунта пользователя.
- Вы хотите использовать хранилище данных, отличное от SharedPreferences.
- Вы хотите, чтобы недавние эмодзи были отсортированы по частоте использования.
Затем вы можете реализовать интерфейс RecentEmojiProvider и задать его с помощью setRecentEmojiProvider().
Селектор направления
Начиная с версии Emoji 15.1, в окне выбора эмодзи поддерживаются двунаправленные эмодзи. Пользователи могут нажать на переключатель, чтобы выбрать, в какую сторону будет повернут эмодзи.

Рисунок 4. Двунаправленный эмодзи, повернутый влево.

Рисунок 5. Двунаправленный эмодзи, повернутый вправо.
Выбор эмодзи с несколькими людьми
Чтобы увидеть варианты эмодзи с несколькими людьми, нажмите и удерживайте эмодзи с парой.

Рисунок 6. Нажмите и удерживайте эмодзи с парой, чтобы увидеть варианты с несколькими людьми.

Рисунок 7. Выберите эмодзи с левой половиной человека.

Рисунок 8. Выберите эмодзи для правой половины.
Когда пользователь выбирает левую или правую половину эмодзи-пары, в правом нижнем углу окна выбора отображается предварительный просмотр, как показано на рисунках 7 и 8. Выбрав обе половины пары эмодзи, пользователи могут нажать на предварительный просмотр, чтобы составить пару эмодзи.
Совместимость с EmojiCompat
Если правило включено, в окне выбора эмодзи используется экземпляр EmojiCompat, чтобы отображать как можно больше эмодзи. Однако для окна выбора эмодзи EmojiCompat не требуется.
Требования
Приложение должно поддерживать Android 5.0 (уровень API 21) или более позднюю версию.
Как использовать библиотеку
Импортируйте
androidx.emoji2:emojipicker:$versionв файлbuild.gradleприложения.dependencies { implementation "androidx.emoji2:emojipicker:$version" }Разверните окно выбора эмодзи и при необходимости задайте
emojiGridRowsиemojiGridColumns.- По умолчанию количество
emojiGridColumnsравно 9. - Количество строк рассчитывается на основе высоты родительского представления и значения
emojiGridColumns. - Используйте значение с плавающей запятой для
emojiGridRows, чтобы показать, что пользователь может прокрутить список эмодзи.
<androidx.emoji2.emojipicker.EmojiPickerView android:id="@+id/emoji_picker" android:layout_width="match_parent" android:layout_height="match_parent" app:emojiGridColumns="9" />val emojiPickerView = EmojiPickerView(context).apply { emojiGridColumns = 15 layoutParams = ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT ) } findViewById<ViewGroup>(R.id.emoji_picker_layout).addView(emojiPickerView)- По умолчанию количество
Чтобы добавить выбранный эмодзи в представление, используйте
setOnEmojiPickedListener(). Например, чтобы добавить данные вEditText, выполните следующие действия:emojiPickerView.setOnEmojiPickedListener { findViewById<EditText>(R.id.edit_text).append(it.emoji) }При необходимости задайте
RecentEmojiProvider. Пример реализации можно посмотреть в примере приложения.При необходимости настройте стили. Создайте собственный стиль, чтобы переопределить атрибуты общей темы, и примените его к
EmojiPickerView. Например, переопределениеcolorControlNormalменяет цвет значка категории.<style name="CustomStyle" > <item name="colorControlNormal">#FFC0CB</item> </style> <androidx.emoji2.emojipicker.EmojiPickerView android:id="@+id/emoji_picker" android:layout_width="match_parent" android:layout_height="match_parent" android:theme="@style/CustomStyle" app:emojiGridColumns="9" />
Пример приложения
В примере приложения Emoji Picker показаны основные варианты использования, а также следующие дополнительные сценарии:
- Перерасчет макета при сбросе
emojiGridRowsилиemojiGridColumns. - Переопределенный поставщик недавно использованных эмодзи, который сортирует их по частоте.
- Дополнительные настройки стиля.