Эмодзи2

Отображение эмодзи на современных и старых устройствах.
Последнее обновление Стабильный релиз Кандидат на релиз Бета-версия Альфа-релиз
13 августа 2025 г. 1.5.0 1.6.0-rc01 - -

Объявление зависимостей

Чтобы добавить зависимость от Emoji2, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .

Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:

классный

dependencies {
    def emoji2_version = "1.5.0"

    implementation "androidx.emoji2:emoji2:$emoji2_version"
    implementation "androidx.emoji2:emoji2-views:$emoji2_version"
    implementation "androidx.emoji2:emoji2-views-helper:$emoji2_version"
}

Котлин

dependencies {
    val emoji2_version = "1.5.0"

    implementation("androidx.emoji2:emoji2:$emoji2_version")
    implementation("androidx.emoji2:emoji2-views:$emoji2_version")
    implementation("androidx.emoji2:emoji2-views-helper:$emoji2_version")
}

Дополнительную информацию о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.

Создать новый выпуск

Более подробную информацию см. в документации по системе отслеживания проблем .

Emoji2 Emojipicker Версия 1.0

Версия 1.5.0

4 сентября 2024 г.

Выпущен androidx.emoji2:emoji2-*:1.5.0 . Версия 1.5.0 содержит следующие изменения .

Важные изменения с версии 1.4.0

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

Версия 1.0.0-альфа03

8 марта 2023 г.

Выпущен androidx.emoji2:emoji2-emojipicker:1.0.0-alpha03 . Версия 1.0.0-alpha03 содержит следующие изменения.

Исправления ошибок

  • Удалены ненужные ресурсы и уменьшен размер библиотеки примерно на 0,3М.

Версия 1.0.0-альфа02

22 февраля 2023 г.

Выпущена androidx.emoji2:emoji2-emojipicker:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит следующие изменения.

Изменения API

  • Добавлен новый API для клиентов Java, позволяющий предоставлять последние эмодзи. ( I39d10 )

Исправления ошибок

  • Обновление ресурсов эмодзи для поддержки эмодзи 15.0 ( Ib4eb3 )
  • При выборе эмодзи во всплывающем окне все идентичные эмодзи заменяются на выбранный эмодзи (кроме строки с последними эмодзи). Также озвучивается эмодзи при нажатии. ( I892c6 )
  • Подождите, пока загрузится emojicompat, прежде чем отображать EmojiPickerView . ( I29e03 )

Версия 1.0.0-альфа01

25 января 2023 г.

Выпущен androidx.emoji2:emoji2-emojipicker:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит следующие изменения.

Новые функции

  • Представлен инструмент выбора эмодзи, обеспечивающий единообразный пользовательский интерфейс с новейшими эмодзи на устройствах и в приложениях OEM-производителей Android. Он обеспечивает поддержку новейших эмодзи и пользовательский интерфейс, включая варианты скинов и поддержку совместимых эмодзи.

Изменения API

  • Представлен класс EmojiPickerView , который предоставляет актуальные эмодзи в вертикально прокручиваемом виде с кликабельным горизонтальным заголовком.
  • Столбцы сетки выбора эмодзи можно задать с помощью атрибута XML emojiGridColumns или функции setEmojiGridColumns() .
  • Строки сетки выбора эмодзи можно задать с помощью атрибута XML emojiGridRows или функции setEmojiGridRows() .
  • Прослушиватель выбранных эмодзи можно установить с помощью setOnEmojiPickedListener() , и прослушиватель будет уведомляться каждый раз, когда пользователь нажимает на любой эмодзи.
  • Поставщик последних эмодзи может быть предоставлен с помощью setRecentEmojiProvider() . Это необязательная функция. Если поставщик последних эмодзи не задан, библиотека будет использовать поставщика последних эмодзи по умолчанию. Поведение по умолчанию определяется следующим образом: 1) все выбранные эмодзи будут сохранены на уровне приложения в общих настройках. 2) в окне выбора будет отображаться не более 3 строк выбранных эмодзи (без дубликатов) в обратном хронологическом порядке.
  • Введен класс EmojiViewItem , который хранит отображаемые эмодзи и их варианты.
  • Представлен интерфейс RecentEmojiProvider , который можно реализовать для предоставления списка недавно использованных эмодзи. recentEmojiProvider отвечает за предоставление эмодзи в категории «Недавно использованные».

Версия 1.6

Версия 1.6.0-rc01

13 августа 2025 г.

Выпущена androidx.emoji2:emoji2-*:1.6.0-rc01 . Версия 1.6.0-rc01 содержит следующие изменения .

Новые функции

  • Реализована поддержка Emoji 16.0 и добавлен суффикс «emoji» к описанию контента.

Изменения API

  • Удаление устаревших аннотаций @RequiresApi(21) ( Ic4792 )
  • Удаление устаревших аннотаций @RequiresApi(21) ( I9103b )

Версия 1.6.0-beta01

2 июля 2025 г.

Выпущен androidx.emoji2:emoji2-*:1.6.0-beta01 . Версия 1.6.0-beta01 содержит следующие изменения .

Новые функции

  • Поддержка обновлений Emoji 16.0
  • Добавьте суффикс «emoji» к описанию контента, чтобы обеспечить единообразное поведение доступности во всех приложениях для выбора эмодзи.

Версия 1.6.0-альфа01

4 июня 2025 г.

Выпущен androidx.emoji2:emoji2-*:1.6.0-alpha01 . Версия 1.6.0-alpha01 содержит следующие изменения .

Новые функции

  • Обновления данных Emoji 16.0 ( Ifc878 )
  • Добавление суффикса «эмодзи» к описанию контента

Исправления ошибок

Версия 1.5

Версия 1.5.0

4 сентября 2024 г.

Выпущен androidx.emoji2:emoji2-*:1.5.0 . Версия 1.5.0 содержит следующие изменения .

Важные изменения с версии 1.4.0

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

Версия 1.5.0-rc01

21 августа 2024 г.

Выпущена androidx.emoji2:emoji2-*:1.5.0-rc01 . Версия 1.5.0-rc01 содержит следующие изменения .

Новые функции

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

Исправления ошибок

  • Удалено ручное описание доступа к новым API платформы, поскольку это происходит автоматически посредством моделирования API при использовании R8 с AGP 7.3 или более поздней версии (например, R8 версии 3.3) и для всех сборок с использованием AGP 8.1 или более поздней версии (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется обновиться до D8 версии 8.1 или более поздней. Подробнее см. в этой статье . ( If6b4c , b/345472586 )
  • Выбор и индикатор вкладок EmojiPickerView обновляются на один клик позже. ( 146b02 , b/288261054 )
  • Выбор и индикатор вкладок EmojiPickerView неисправны. ( 5e1f14 , b/273883688 )

Версия 1.5.0-beta01

10 июля 2024 г.

Выпущен androidx.emoji2:emoji2-*:1.5.0-beta01 . Версия 1.5.0-beta01 содержит следующие изменения .

Новые функции

  • Поддержка emoji 15.1 и двунаправленного интерфейса выбора emoji.
  • Поддержка редизайна выбора нескольких оттенков кожи.

Исправления ошибок

  • Выбор и индикатор вкладок EmojiPickerView обновляются на один клик позже. ( 146b02 , b/288261054 )
  • Выбор и индикатор вкладок EmojiPickerView неисправны. ( 5e1f14 , b/273883688 )

Версия 1.5.0-альфа01

13 декабря 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.5.0-alpha01 . Версия 1.5.0-alpha01 содержит следующие изменения.

Новые функции

  • emoji2-bundled содержит обновленный шрифт эмодзи для поддержки Emoji 15.1.

Изменения API

  • Добавьте исполнителей для управления потоком обратного вызова для InitCallback . ( I32b67 )
  • BundledEmojiCompatConfig теперь использует исполнитель для управления потоками загрузки. ( I00e81 )

Версия 1.4

Версия 1.4.0

9 августа 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.4.0 . Версия 1.4.0 содержит следующие изменения.

Важные изменения с версии 1.3.0

Версия 1.4.0-rc01

26 июля 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.4.0-rc01 . Версия 1.4.0-rc01 содержит следующие изменения.

Изменения API

  • Ввести список registerSource ( Iae92f )
  • Отзыв API Council: TransitionManager.seekTo() переименован в createSeekController() . Пожалуйста, исправьте предыдущий комментарий о добавлении TransitionManager.seekTo() в TransitionManager.createSeekController() . ( Idbeb1 )
  • Добавлен ExerciseRouteResult , который не является суперклассом для Data , NoData и ConsentRequiredStates . ExerciseRoute добавлен как отдельный класс, содержащий данные о местоположении маршрута. ( I22eed )
  • Добавлен PagerLayoutInfo с информацией, собранной после прохода измерения в Pager. Также добавлен PageInfo — информация об одной измеряемой странице в Pager. ( Iad003 , b/283098900 )

Исправления ошибок

  • Мы обновили цвета для Button , IconButton и TextButton в соответствии с дизайном Material3. Семантическая роль Button , IconButton и TextButton теперь может быть переопределена с помощью Modifier.semantics . ( Ib2495 )
  • Исправлен выбор вкладок и индикатор EmojiPickerView , которые обновлялись на один клик позже. ( I4db04 )
  • FileNotFoundException при отображении окна выбора эмодзи ( I353e4 )
  • Перехватите исключение WindowManager.BadTokenException при использовании EmojiPickerView ( I0a144 )

Версия 1.4.0-beta05

7 июня 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.4.0-beta05 . Версия 1.4.0-beta05 содержит следующие изменения.

Исправления ошибок

  • Исправлена ошибка, появившаяся в версии 1.3, из-за которой MetricsAffectingSpans такие как RelativeSizeSpan , применялись дважды: один раз при компоновке текста и ещё раз внутри EmojiSpan.draw . В результате размер отрисовывался некорректно, что было заметно, если какой-либо из параметров размера текста изменялся в процессе компоновки. ( b/283208650 )

Версия 1.4.0-beta04

24 мая 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.4.0-beta04 . Версия 1.4.0-beta04 содержит следующие изменения.

В этом выпуске исправлена ошибка, существовавшая с версии 1.0, из-за которой представления с неосновным обработчиком вызывали исключение при попытке обновить области эмодзи после завершения загрузки шрифта. Обходного пути нет. Если вы столкнулись с этой ошибкой, пожалуйста, обновитесь до этой версии или более поздней.

Исправления ошибок

  • Обратные вызовы инициализации EmojiCompat теперь будут использовать обработчик из каждого представления, учитывая представления, не находящиеся в основном потоке. ( Iccbcf )

Версия 1.4.0-beta03

10 мая 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.4.0-beta03 . Версия 1.4.0-beta03 содержит следующие изменения.

Исправления ошибок

  • Исправлен сбой во всплывающем окне выбора эмодзи. ( 0acc8e )
  • Вызвать ранние исключения в EmojiCompat getEmojiStart/getEmojiEnd . ( 26177f )

Версия 1.4.0-beta02

19 апреля 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.4.0-beta02 . Версия 1.4.0-beta02 содержит следующие изменения.

Исправления ошибок

  • Обновление базовых файлов lint ( Iaa212 )

Версия 1.4.0-beta01

5 апреля 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.4.0-beta01 . Версия 1.4.0-beta01 содержит следующие изменения.

Новые функции

androidx.emoji2:emoji2-emojipicker

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

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

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

Липкие варианты

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

Недавние эмодзи

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

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

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

Работа с EmojiCompat

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

Как пользоваться библиотекой

Чтобы использовать библиотеку, разработчик приложения должен

  1. Импортируйте androidx.emoji2:emojipicker:$version в build.gradle .

    dependencies {
      implementation "androidx.emoji2:emojipicker:$version"
    }
    
  2. Расширьте представление выбора эмодзи и при необходимости настройте emojiGridRows и emojiGridColumns на основе желаемого размера каждой ячейки эмодзи.

    • Вы можете оставить их неустановленными, по умолчанию установлено 9 emojiGridColumns , строки будут рассчитаны на основе высоты родительского представления и emojiGridColumns
    • Вы можете установить emojiGridRows как плавающее значение, чтобы указать, что при прокрутке вниз в XML есть еще эмодзи.
     <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)
  1. Если вы хотите добавить выбранные эмодзи в EditText, используйте setOnEmojiPickedListener()

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

  3. При необходимости настройте стили. Создайте собственный стиль, чтобы переопределить общие атрибуты темы, и примените его к 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" />
    

Смотрите пример приложения для примера реализации.

Полную информацию о API можно найти здесь .

Пример приложения

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

  • Представление было переформатировано, поскольку emojiGridRows и emojiGridColumns были сброшены.
  • Последний поставщик эмодзи переопределяется для сортировки по частоте.
  • Настройка стиля.

Изменения API

Библиотека Emoji Picker обновлена следующими новыми API:

  • Класс EmojiPickerView , который предоставляет актуальные эмодзи в вертикально прокручиваемом представлении с кликабельным горизонтальным заголовком.
  • Возможность задавать количество столбцов и строк в сетке выбора эмодзи с помощью XML-атрибутов emojiGridColumns и emojiGridRows или методов setEmojiGridColumns() и setEmojiGridRows() .
  • Возможность установки прослушивателя выбранных эмодзи с помощью метода setOnEmojiPickedListener() . Слушатель будет получать уведомления каждый раз, когда пользователь нажимает на любой эмодзи.
  • Возможность указать поставщика последних эмодзи через метод setRecentEmojiProvider() . Это необязательная функция. Если поставщик последних эмодзи не задан, библиотека будет использовать поставщика последних эмодзи по умолчанию. Поведение по умолчанию определяется следующим образом:
    • Все выбранные эмодзи будут сохранены для каждого уровня приложения в общих настройках.
    • В палитре будет отображено не более 3 строк выбранных эмодзи (без дубликатов) в обратном хронологическом порядке.
  • Класс EmojiViewItem , который содержит отображаемые эмодзи и их варианты.
  • Интерфейс RecentEmojiProvider , который можно реализовать для предоставления списка недавно использованных эмодзи. recentEmojiProvider отвечает за предоставление эмодзи в категории «Недавно использованные».
  • Интерфейс RecentEmojiAsyncProvider , который можно реализовать для предоставления списка недавно использованных эмодзи. RecentEmojiAsyncProvider отвечает за предоставление эмодзи в категории «Недавно использованные». Этот интерфейс эквивалентен RecentEmojiProvider , который позволяет клиентам переопределять метод getRecentEmojiListAsync() для предоставления последних эмодзи.
  • Класс RecentEmojiProviderAdapter , который является адаптером для RecentEmojiAsyncProvider и реализует RecentEmojiProvider .

Версия 1.4.0-альфа01

22 марта 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.4.0-alpha01 . Версия 1.4.0-alpha01 содержит следующие изменения.

Исправления ошибок

  • Исправление тестов, отключение нестабильных тестов и очистка.

Версия 1.3

Версия 1.3.0

22 марта 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.3.0 . Версия 1.3.0 содержит следующие изменения.

Важные изменения с версии 1.2.0

  • Этот выпуск позволяет Compose Foundation 1.4.0 и выше включить интеграцию emoji2.
  • Он также обеспечивает возможность замены EmojiSpans пользовательским кодом рисования, а также поддержку исключений эмодзи, определенных на Android.

Версия 1.3.0-rc01

8 марта 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.3.0-rc01 . Версия 1.3.0-rc01 содержит следующие изменения.

Новые функции

  • Эта версия поддерживает интеграцию emoji2 compose.

Изменения API

  • Заменить интервалы на пользовательский код отрисовки.
  • Запрос исключений системы.

Исправления ошибок

  • И исправлена ошибка, из-за которой фоновые интервалы не применялись правильно за EmojiSopans .

Версия 1.3.0-beta03

23 февраля 2023 г.

Выпущены androidx.emoji2:emoji2-bundled:1.3.0-beta03 , androidx.emoji2:emoji2-views:1.3.0-beta03 и androidx.emoji2:emoji2-views-helper:1.3.0-beta03 .

22 февраля 2023 г.

Выпущена androidx.emoji2:emoji2:1.3.0-beta03 . Версия 1.3.0-beta03 содержит следующие изменения.

Новые функции

  • Без изменений. Этот релиз предназначен для подготовки к интеграции Compose.

Версия 1.3.0-beta02

8 февраля 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.3.0-beta02 . Версия 1.3.0-beta02 содержит следующие изменения.

Новые функции

  • Этот выпуск представляет собой стабилизацию для поддержки интеграции компоновки.

Версия 1.3.0-beta01

25 января 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.3.0-beta01 . Версия 1.3.0-beta01 содержит следующие изменения.

Новые функции

  • Запрос исключений системы.
  • Замена интервалов для пользовательского кода отрисовки.
  • И исправлена ошибка, из-за которой фоновые интервалы не применялись правильно за EmojiSopans .
  • В этом выпуске добавлены API, необходимые для поддержки EmojiCompat в Compose. Ожидается, что поддержка Emoji Compat появится в ближайшем будущем выпуске.

Версия 1.3.0-альфа01

11 января 2023 г.

Выпущена androidx.emoji2:emoji2-*:1.3.0-alpha01 . Версия 1.3.0-alpha01 содержит следующие изменения.

Новые API для низкоуровневых взаимодействий

  • Запрос системных исключений
  • Замена интервалов для пользовательского кода отрисовки
  • И исправлена ошибка, из-за которой фоновые интервалы не применялись правильно за EmojiSopans .
  • В этом выпуске добавлены API, необходимые для поддержки EmojiCompat в Compose. Ожидается, что поддержка Emoji Compat появится в ближайшем будущем выпуске.

Изменения API

  • Добавлена возможность запрашивать системные исключения в TypefaceEmojiRasterizer . ( I5653e )
  • Добавлен новый API EmojiCompat.SpanFactory для замены поведения EmojiSpan по умолчанию на пользовательский код отрисовки и изменения размера. ( Ib69d9 )
  • Добавлен EmojiCompat в Compose ( I96f37 , b/139326806 )

Исправления ошибок

  • Emoji2 теперь будет правильно отрисовывать фоны из BackgroundSpan . ( Ide6a8 , b/230525134 )
  • Доработка API AppCompat для версии 1.5.0-beta01 ( I2a43d , b/236866227 )

Версия 1.2

Версия 1.2.0

10 августа 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.2.0 . Версия 1.2.0 содержит следующие изменения.

Важные изменения с версии 1.1.0

Это версия с исправлением ошибок. Новые функции и API не добавлялись с версии 1.1.0.

Однако приложения, использующие PrecomputedText или TextView.setText(char[]) должны отдать приоритет переходу на эту версию.

Были исправлены следующие ошибки:

  • Emoji2 добавит эмодзи в PrecomputedText , отбросив ранее вычисленную текстовую разметку. ( I47d06 , b/211231958 )
  • Исправление сбоя редактора обратного переноса с Android P в EditText , настроенный на использование emoji2. ( Ifd709 , b/216891011 )
  • Исправлен сбой при загрузке шрифта emoji2 и использовании TextView.setText(char[]) . ( Id511e , b/206859724 )

Версия 1.2.0-rc01

27 июля 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.2.0-rc01 . Версия 1.2.0-rc01 содержит следующие изменения.

  • Никаких изменений с момента последней бета-версии.

Версия 1.2.0-beta01

13 июля 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.2.0-beta01 . Версия 1.2.0-beta01 содержит следующие изменения.

Новые функции

  • Никаких изменений по сравнению с предыдущей версией (этот выпуск предназначен для поддержки выпуска AppCompat).

Версия 1.2.0-альфа04

20 апреля 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.2.0-alpha04 . Версия 1.2.0-alpha04 содержит следующие изменения.

Новые функции

  • Никаких изменений в этом выпуске.

Версия 1.2.0-альфа03

6 апреля 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.2.0-alpha03 . Версия 1.2.0-alpha03 содержит следующие изменения.

Новые функции

  • Никаких изменений по сравнению с предыдущей версией (этот выпуск предназначен для поддержки выпуска appcompat).

Версия 1.2.0-альфа02

23 марта 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.2.0-alpha02 . Версия 1.2.0-alpha02 содержит следующие изменения.

Исправления ошибок

  • Emoji2 добавит эмодзи в PrecomputedText , отбросив ранее вычисленную текстовую разметку. ( I47d06 , b/211231958 )
  • Исправление сбоя редактора обратного переноса с Android P в EditText, настроенный на использование emoji2. ( Ifd709 , b/216891011 )
  • Исправлен сбой при загрузке шрифта emoji2 и использовании TextView.setText(char[]) . ( Id511e , b/206859724 )

Версия 1.2.0-альфа01

23 февраля 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.2.0-alpha01 . Версия 1.2.0-alpha01 содержит следующие изменения.

Никаких изменений с версии 1.1.0.

1.1

Версия 1.1.0

23 февраля 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.1.0 . Версия 1.1.0 содержит следующие изменения.

Важные изменения с версии 1.0.0

  • emoji2-bundled содержит шрифт emoji 14
  • Новый API getEmojiMatch возвращает точную информацию для клавиатур, чтобы определить, как будет отображаться эмодзи при наличии шрифта emojicompat, который находится за системным шрифтом.
  • Исправление ошибки NumberKeyListener , которое позволяет корректно фильтровать символы при вводе цифр.

Версия 1.1.0-rc01

9 февраля 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.1.0-rc01 . Версия 1.1.0-rc01 содержит следующие изменения.

Новые функции

Никаких изменений по сравнению с бета-версией.

Новые функции по сравнению с emoji2 1.0.0:

  • emoji2-bundled содержит шрифт emoji 14
  • Новый API getEmojiMatch возвращает точную информацию для клавиатур, чтобы определить, как будет отображаться эмодзи при наличии шрифта emojicompat, который находится за системным шрифтом.
  • Исправление ошибки NumberKeyListener , которое позволяет корректно фильтровать символы при вводе цифр.

Версия 1.1.0-beta01

26 января 2022 г.

Выпущена androidx.emoji2:emoji2-*:1.1.0-beta01 . Версия 1.1.0-beta01 содержит следующие изменения.

Исправления ошибок

  • Релиз androidx-emoji2 beta01. Без изменений по сравнению с alpha01 ( Ic61d9 ).

Версия 1.1.0-альфа01

15 декабря 2021 г.

Выпущена androidx.emoji2:emoji2-*:1.1.0-alpha01 . Версия 1.1.0-alpha01 содержит следующие изменения.

Новые функции

  • emoji2-bundled содержит шрифт emoji 14
  • Новый API getEmojiMatch возвращает точную информацию для клавиатур, чтобы определить, как будет отображаться эмодзи при наличии шрифта emojicompat, который находится за системным шрифтом.
  • Исправление ошибки NumberKeyListener , которое позволяет корректно фильтровать символы при вводе цифр.

Изменения API

  • Добавлен новый API getEmojiMatch , позволяющий клавиатурам более точно искать соответствие эмодзи в emojicompat.
  • Устарейте hasEmojiGlyph , поскольку возвращаемое им логическое значение неточно при тестировании шрифта, который старше шрифта эмодзи платформы. Замените на getEmojiMatch . ( Ie693d )

Исправления ошибок

  • Emoji2 не будет заключать в оболочку экземпляры NumberKeyListener , позволяя настраивать локаль с помощью TextView .
  • Appcompat не будет переносить экземпляры NumberKeyListener , переданные в setKeyListener , что позволяет TextView правильно настраивать локаль для NumberKeyListeners . ( Ibf113 , b/207119921 )

1.0

Версия 1.0.1

15 декабря 2021 г.

Выпущена androidx.emoji2:emoji2-*:1.0.1 . Версия 1.0.1 содержит следующие изменения.

Исправления ошибок

  • Emoji2 не будет заключать в оболочку экземпляры NumberKeyListener , позволяя настраивать локаль с помощью TextView .
  • Appcompat не будет переносить экземпляры NumberKeyListener , переданные в setKeyListener , что позволяет TextView правильно настраивать локаль для NumberKeyListeners . ( Ibf113 , b/207119921 )

Версия 1.0.0

17 ноября 2021 г.

Выпущена androidx.emoji2:emoji2-*:1.0.0 . Версия 1.0.0 содержит следующие изменения.

Основные особенности версии 1.0.0

androidx.emoji2 заменяет androidx.emoji с дополнительными возможностями:

  • Уменьшение размера APK по сравнению с androidx.emoji
  • Автоматическая настройка
  • Добавлено как зависимость к appcompat 1.4

Дополнительную информацию об androidx.emoji2 см. в разделе Поддержка современных эмодзи и в нашем докладе на саммите разработчиков Android Отображение ВСЕХ эмодзи в вашем приложении Android Dev .

Версия 1.0.0-rc01

27 октября 2021 г.

Выпущена androidx.emoji2:emoji2-*:1.0.0-rc01 . Версия 1.0.0-rc01 содержит следующие изменения.

  • Никаких изменений с версии beta02.

Emoji2 Версия 1.0.0-beta01

15 сентября 2021 г.

Выпущена androidx.emoji2:emoji2-*:1.0.0-beta01 . Версия 1.0.0-beta01 содержит следующие изменения.

Изменения API

  • Добавлен setLoadingExecutor в FontRequestEmojiCompatConfig , который заменяет предыдущий API setHandler . Этот API позволяет приложениям настраивать FontRequestEmojiCompatConfig для использования любого фонового исполнителя.

    Это изменение является критическим по сравнению с androidx.emoji:emoji , поэтому setHandler сохраняется как устаревший API, не требующий операции, для облегчения миграции. ( I6cd48 )

  • EmojiCompat корректно устанавливает EditorInfo.extras на Android 11

    • Пользовательские виджеты, использующие IME, не являющиеся подклассами EditText, могут вызывать EmojiCompat.updateEditorInfo , чтобы сообщить IME о том, что они поддерживают обработку EmojiCompat. ( I1ea9b )

Исправления ошибок

  • Исправлен DefaultEmojiCompatConfig для корректного поиска поставщика шрифтов эмодзи в API 19 и 28. Это исправляет ошибку, появившуюся в emoji2 1.0.0-alpha01. ( Ib33d8 , b/197906329 )

Версия 1.0.0-альфа03

30 июня 2021 г.

Выпущена androidx.emoji2:emoji2-*:1.0.0-alpha03 . Версия 1.0.0-alpha03 содержит следующие изменения.

Новые функции

Этот выпуск содержит исправления ошибок и стабилизацию.

  1. EmojiEditTextHelper теперь позволяет передавать null в качестве KeyListener. Это позволяет платформе применять значения NULL к эмодзи, поддерживающим реализации EditText.
  2. При использовании EmojiCompatInitializer начальная задержка запуска сокращается и срабатывает после возобновления первой активности. Это позволяет приложению запускаться без проблем и предотвращает загрузку шрифта при запуске приложений, не отображающих пользовательский интерфейс. После небольшой задержки EmojiCompat создаст поток для загрузки шрифта эмодзи.
  • Для реализации задержки добавлена новая зависимость от androidx.lifecycle:lifecycle-process из androidx.emoji2:emoji2 . Это окажет незначительное влияние на размер APK-файла для приложений, уже поддерживающих жизненный цикл (например, приложений с appcompat).

Изменения API

  • Разрешить использование null KeyListener в AppCompatEditText. Это отменяет аннотацию «не null», добавленную в AppCompatEditText в версии 1.4.0-alpha01, и восстанавливает прежнее поведение при передаче null. ( I21482 , b/189559345 )

Исправления ошибок

  • Измените EmojiCompatInitializer так, чтобы загрузка шрифта откладывалась до 500 мс после первого Activity.onResume . Это позволяет активности выполнять Application.onCreate и Activity.onCreate без конкуренции, при этом обеспечивая загрузку шрифта эмодзи вскоре после запуска приложения. ( I4bff7 )

Версия 1.0.0-альфа02

2 июня 2021 г.

Выпущены androidx.emoji2:emoji2:1.0.0-alpha02 , androidx.emoji2:emoji2-views:1.0.0-alpha02 и androidx.emoji2:emoji2-views-helper:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит эти изменения.

Изменения API

  • Пакет в emoji2-views-helper переименован в androidx.emoji2.viewsintegration . Это критическое изменение для AppCompat 1.4.0-alpha01 , и приложения должны обновить зависимость AppCompat для использования новой версии emoji2. ( Ie8397 )

Версия 1.0.0-альфа01

18 мая 2021 г.

Выпущены androidx.emoji2:emoji2:1.0.0-alpha01 , androidx.emoji2:emoji2-views:1.0.0-alpha01 и androidx.emoji2:emoji2-views-helper:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит эти изменения.

Возможности этого первоначального выпуска

Для поддержки современных эмодзи из API 19 рекомендуется интегрировать emojicompat во все приложения. Весь пользовательский контент в вашем приложении содержит 🎉.

EmojiCompat перешёл с артефактов androidx.emoji на новый androidx.emoji2 , который сейчас находится в стадии alpha01. Новые артефакты заменяют предыдущую версию.

emoji2 добавлен как зависимость к AppCompat, начиная с AppCompat 1.4.0-alpha01 и включен по умолчанию для представлений AppCompat.

Артефакт emoji2 представляет новую автоматическую настройку с использованием библиотеки androidx.startup . Вам больше не нужно писать код 👨🏽‍💻 для отображения 🐻‍❄️.

Изменения в emoji2 по сравнению с emoji

  • Добавлена новая автоматическая конфигурация EmojiCompatInitializer с использованием androidx.startup .
  • Добавлена новая конфигурация по умолчанию, которая использует местоположение службы для поиска поставщика загружаемых шрифтов в DefaultEmojiCompatConfiguration .
  • Классы перенесены из пакета androidx.emoji в androidx.emoji2 .
  • Выделите EmojiTextView и связанные с ним представления в отдельный артефакт emoji2-views . Этот метод следует использовать только в том случае, если ваше приложение не использует appcompat.
  • Извлеченные помощники для интеграции emojicompat в пользовательские представления в отдельный артефакт emoji2-views-helper .
  • Добавлены аннотации о допустимости значений NULL.
  • Помощники в emoji2-views-helper теперь можно использовать, даже если EmojiCompat не инициализирован (ранее они вызывали исключение).

Какую зависимость следует добавить?

  • Приложения с AppCompat следует обновить до версии AppCompat 1.4.0-alpha01 или выше.
  • Приложения без AppCompat, использующие TextView / EditText из платформы, должны использовать EmojiTextView и связанные с ним классы из emoji2-views .

Как поддерживать пользовательские представления

  • Приложения с AppCompat должны расширять AppCompatTextView , AppCompatButton и т. д. вместо платформенных TextView и т. д.
  • Приложения без AppCompat должны добавить зависимость androidx.emoji2:emoji2-views-helper и использовать помощников для интеграции с пользовательскими подклассами TextView или EditText .

Настройка автоматической инициализации

  • Приложения могут отключить автоматическую инициализацию, добавив в манифест следующее:

     <provider
         android:name="androidx.startup.InitializationProvider"
         android:authorities="${applicationId}.androidx-startup"
         android:exported="false"
         tools:node="merge">
         <meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer"
                   tools:node="remove" />
     </provider>
    
  • Это отключает автоматическую настройку, и вы можете передать пользовательскую конфигурацию в EmojiCompat.init . Конфигурацию системы по умолчанию можно получить с DefaultEmojiCompatConfig.create(context) для дальнейшей настройки перед передачей в EmojiCompat.init .