Эмодзи2

Отображение смайлов на текущих и старых устройствах.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
4 сентября 2024 г. 1.5.0 - - -

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

Чтобы добавить зависимость от 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.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.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 , б/288261054 )
  • Выбор вкладок и индикатор EmojiPickerView не работают. ( 5e1f14 , б/273883688 )

Версия 1.5.0-бета01

10 июля 2024 г.

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

Новые возможности

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

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

  • Выбор вкладок и индикатор EmojiPickerView обновляются одним щелчком мыши. ( 146b02 , б/288261054 )
  • Выбор вкладок и индикатор EmojiPickerView не работают. ( 5e1f14 , б/273883688 )

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

13 декабря 2023 г.

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

Новые возможности

  • emoji2-bundled содержит обновленный шрифт Emoji для поддержки 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: TransitionManager.seekTo() переименован в createSeekController() . Пожалуйста, измените предыдущий комментарий о добавлении TransitionManager.seekTo() в TransitionManager.createSeekController() . ( Идбеб1 )
  • Добавлен ExerciseRouteResult , который не является суперклассом для Data , NoData и ConsentRequiredStates . Добавлен ExerciseRoute как отдельный класс, который содержит данные о местоположении для маршрута. ( I22eed )
  • Представлен PagerLayoutInfo с информацией, собранной после прохождения измерения в Pager. Также введена PageInfo, информация об одной измеренной странице в пейджере. ( Iad003 , б/283098900 )

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

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

Версия 1.4.0-бета05

7 июня 2023 г.

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

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

  • Исправлена ​​ошибка, появившаяся в версии 1.3, из-за которой MetricsAffectingSpans например RelativeSizeSpan , применялись дважды. Один раз во время макета текста и снова внутри EmojiSpan.draw . Результатом было отрисовка неправильного размера, что было видно, если какой-либо из параметров размера текста был изменен диапазоном. ( б/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-бета03

10 мая 2023 г.

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

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

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

Версия 1.4.0-бета02

19 апреля 2023 г.

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

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

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

Версия 1.4.0-бета01

5 апреля 2023 г.

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

Новые возможности

androidx.emoji2:emoji2-emojipicker

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

Актуальные смайлы

Новые смайлы выпускаются каждый год, и мы выборочно будем включать их в средство выбора смайлов. Чтобы обеспечить обратную совместимость, мы выполняем точную внутреннюю проверку рендеринга эмодзи, чтобы исключить тофу. Это обеспечит совместимость библиотеки с несколькими версиями 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.

Изменения 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 содержит эти коммиты.

Новые возможности

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

Версия 1.3.0-бета01

25 января 2023 г.

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

Новые возможности

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

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

11 января 2023 г.

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

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

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

Изменения API

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

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

  • Emoji2 теперь правильно рисует фон из BackgroundSpan . ( ide6a8 , б/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 , б/211231958 )
  • Исправление сбоя редактора Backport из Android P в EditText , который настроен на использование emoji2. ( Ifd709 , б/216891011 )
  • Исправлен сбой, когда emoji2 загружал шрифт и использовался TextView.setText(char[]) . ( Id511e , б/206859724 )

Версия 1.2.0-rc01

27 июля 2022 г.

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

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

Версия 1.2.0-бета01

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 , б/211231958 )
  • Исправление сбоя редактора Backport из Android P в EditText, который настроен на использование emoji2. ( Ifd709 , б/216891011 )
  • Исправлен сбой, когда emoji2 загружал шрифт и использовался TextView.setText(char[]) . ( Id511e , б/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 содержится шрифт 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-бета01

26 января 2022 г.

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

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

  • Выпуск androidx-emoji2 beta01. Никаких изменений по сравнению с альфа01 ( 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 , так как его логическое возвращаемое значение является неточным при тестировании со шрифтом, который старше, чем шрифт платформы emoji. Замените на getEmojiMatch . ( Ie693d )

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

  • Emoji2 не будет обертывать экземпляры NumberKeyListener , позволяя настраивать локаль с помощью TextView .
  • Appcompat не будет обертывать экземпляры NumberKeyListener , переданные в setKeyListener , что позволяет TextView правильно настроить локаль в NumberKeyListeners . ( Ibf113 , б/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 , б/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

  • В FontRequestEmojiCompatConfig добавлен setLoadingExecutor , который заменяет предыдущий 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 , р/197906329 )

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

30 июня 2021 г.

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

Новые возможности

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

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

Изменения API

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

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

  • Измените EmojiCompatInitializer, чтобы задержать загрузку шрифта до 500 мс после первого Activity.onResume . Это позволяет действию беспрепятственно выполнять Application.onCreate и Activity.onCreate , при этом обеспечивая загрузку шрифта emoji вскоре после запуска приложения. ( 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 содержит эти коммиты.

Возможности этой первоначальной версии

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

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

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 .
  • Добавлены аннотации об отсутствии значений.
  • Помощники в emoji2-views-helper теперь можно использовать, даже если EmojiCompat не инициализирован (ранее они вызывали исключение).

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

  • Приложения с AppCompat следует обновить до версии 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 .