Выбор эмодзи

Emoji Picker — это решение для пользовательского интерфейса, предлагающее современный внешний вид, актуальные эмодзи и простоту использования. Пользователи могут просматривать и выбирать эмодзи и их варианты или выбирать из недавно использованных эмодзи.

Рисунок 1. Выбор эмодзи

Благодаря этой библиотеке приложения из самых разных источников могут предоставлять пользователям единый и инклюзивный опыт использования эмодзи, избавляя разработчиков от необходимости создавать и поддерживать собственный инструмент выбора эмодзи с нуля.

Функции

Инструмент выбора эмодзи обладает следующими функциями.

Актуальные эмодзи

Новые эмодзи выборочно добавляются в Emoji Picker. Библиотека Emoji Picker совместима с различными версиями и устройствами Android.

Варианты с липкими свойствами

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

Благодаря этой функции пользователи могут отправлять предпочитаемые варианты эмодзи одним касанием.

варианты эмодзи
Рисунок 2. Варианты эмодзи.

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

последние эмодзи
Рисунок 3. Последние эмодзи.

Компонент RecentEmojiProvider отвечает за предоставление эмодзи из категории « Недавно использованные» . Библиотека имеет стандартный поставщик недавних эмодзи, который удовлетворяет наиболее распространенному сценарию использования:

  • Все выбранные эмодзи сохраняются для каждого приложения в общих настройках.
  • В окне выбора отображается не более трех рядов выбранных эмодзи, без дубликатов, в обратном хронологическом порядке.

Если такого поведения по умолчанию достаточно, то вам не нужно использовать setRecentEmojiProvider() .

Возможно, вам потребуется настроить поведение поставщика услуг. Вот несколько распространенных сценариев:

  • Вы хотите сохранять разные выбранные эмодзи для каждой учетной записи пользователя.
  • Вы хотите использовать другое хранилище данных, отличное от общих настроек.
  • Вы хотите отобразить последние эмодзи, отсортированные по частоте использования.

Затем вы можете реализовать интерфейс RecentEmojiProvider и установить его с помощью setRecentEmojiProvider() .

селектор направления

Начиная с версии Emoji 15.1 , средство выбора эмодзи поддерживает двунаправленные эмодзи. Пользователи могут нажать на переключатель двунаправленных эмодзи, чтобы переключаться между версиями эмодзи, обращенными влево и вправо.

bidirectional left emoji

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

bidirectional right emoji

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

Выбор эмодзи для нескольких пользователей

Пользователи могут касаться и удерживать эмодзи-пары, чтобы отобразить варианты эмодзи, состоящие из нескольких человек.

touch and hold emoji couple

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

tap left emoji person

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

tap right emoji person

Рисунок 8. Выберите эмодзи человека, изображающее правую половину тела.

Когда пользователь выбирает левую или правую половину эмодзи-пары, в правом нижнем углу отображается предварительный просмотр, как показано на рисунках 7 и 8. После выбора обеих половин эмодзи-пары пользователи могут выбрать предварительный просмотр, чтобы составить собственную эмодзи-пару.

Совместимость с EmojiCompat

Если эта функция включена, в средстве выбора эмодзи используется экземпляр EmojiCompat для отображения максимально возможного количества эмодзи. Однако средство выбора эмодзи не требует EmojiCompat .

Предварительные требования

Ваше приложение должно быть ориентировано на Android 5.0 (уровень API 21) или выше.

Воспользуйтесь библиотекой

  1. Добавьте строку androidx.emoji2:emojipicker:$version в файл ` build.gradle вашего приложения.

    dependencies {
        implementation "androidx.emoji2:emojipicker:$version"
    }
    
  2. Создайте представление 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)
    
  3. Используйте setOnEmojiPickedListener() , чтобы добавить выбранный эмодзи в представление. Например, чтобы добавить его в EditText , выполните следующие действия:

    emojiPickerView.setOnEmojiPickedListener {
        findViewById<EditText>(R.id.edit_text).append(it.emoji)
    }
    
  4. При желании можно установить RecentEmojiProvider ; пример реализации см. в демонстрационном приложении.

  5. При желании можно настроить стили. Создайте собственный стиль, чтобы переопределить общие атрибуты темы и применить его к 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 .
  • Переопределенный поставщик последних эмодзи, сортирующий их по частоте появления.
  • Дополнительная настройка стиля.