Emoji Picker — это решение для пользовательского интерфейса, предлагающее современный внешний вид, актуальные эмодзи и простоту использования. Пользователи могут просматривать и выбирать эмодзи и их варианты или выбирать из недавно использованных эмодзи.
Благодаря этой библиотеке приложения из самых разных источников могут предоставлять пользователям единый и инклюзивный опыт использования эмодзи, избавляя разработчиков от необходимости создавать и поддерживать собственный инструмент выбора эмодзи с нуля.
Функции
Инструмент выбора эмодзи обладает следующими функциями.
Актуальные эмодзи
Новые эмодзи выборочно добавляются в Emoji Picker. Библиотека Emoji Picker совместима с различными версиями и устройствами Android.
Варианты с липкими свойствами
Нажмите и удерживайте эмодзи, чтобы отобразить меню вариантов, например, разных полов или оттенков кожи. Выбранный вами вариант сохраняется в окне выбора эмодзи, а в основной панели используется последний выбранный вариант.
Благодаря этой функции пользователи могут отправлять предпочитаемые варианты эмодзи одним касанием.

Последние эмодзи

Компонент RecentEmojiProvider отвечает за предоставление эмодзи из категории « Недавно использованные» . Библиотека имеет стандартный поставщик недавних эмодзи, который удовлетворяет наиболее распространенному сценарию использования:
- Все выбранные эмодзи сохраняются для каждого приложения в общих настройках.
- В окне выбора отображается не более трех рядов выбранных эмодзи, без дубликатов, в обратном хронологическом порядке.
Если такого поведения по умолчанию достаточно, то вам не нужно использовать setRecentEmojiProvider() .
Возможно, вам потребуется настроить поведение поставщика услуг. Вот несколько распространенных сценариев:
- Вы хотите сохранять разные выбранные эмодзи для каждой учетной записи пользователя.
- Вы хотите использовать другое хранилище данных, отличное от общих настроек.
- Вы хотите отобразить последние эмодзи, отсортированные по частоте использования.
Затем вы можете реализовать интерфейс 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" }Создайте представление Emoji Picker и, при необходимости, задайте параметры
emojiGridRowsиemojiGridColumns.- По умолчанию количество элементов
emojiGridColumnsравно 9. - Количество строк рассчитывается на основе высоты родительского элемента и значения параметра
emojiGridColumns. - Используйте значение типа float для
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. - Переопределенный поставщик последних эмодзи, сортирующий их по частоте появления.
- Дополнительная настройка стиля.