Emoji2
| Latest Update | Stable Release | Release Candidate | Beta Release | Alpha Release |
|---|---|---|---|---|
| January 25, 2023 | 1.2.0 | - | 1.3.0-beta01 | - |
Declaring dependencies
To add a dependency on Emoji2, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.
Add the dependencies for the artifacts you need in the build.gradle file for
your app or module:
Groovy
dependencies {
def emoji2_version = "1.2.0"
implementation "androidx.emoji2:emoji2:$emoji2_version"
implementation "androidx.emoji2:emoji2-views:$emoji2_version"
implementation "androidx.emoji2:emoji2-views-helper:$emoji2_version"
}
Kotlin
dependencies {
val emoji2_version = "1.2.0"
implementation("androidx.emoji2:emoji2:$emoji2_version")
implementation("androidx.emoji2:emoji2-views:$emoji2_version")
implementation("androidx.emoji2:emoji2-views-helper:$emoji2_version")
}
For more information about dependencies, see Add Build Dependencies.
Feedback
Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.
See the Issue Tracker documentation for more information.
Emoji2 Emojipicker Version 1.0
Version 1.0.0-alpha01
January 25, 2023
androidx.emoji2:emoji2-emojipicker:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits.
New Features
- Introduced an emoji picker which provides consistent user experience with the latest emojis across Android OS OEM devices and apps. It provides the latest emoji support and emoji picker UI including skin-tone variants and emoji compat support.
API Changes
- Introduced
EmojiPickerViewclass that provides up-to-date emojis in a vertical scrollable view with a clickable horizontal header. - The emoji picker grid columns can be set via XML attribute
emojiGridColumnsor functionsetEmojiGridColumns(). - The emoji picker grid rows can be set via XML attribute
emojiGridRowsor functionsetEmojiGridRows(). - The emoji picked listener can be set via
setOnEmojiPickedListener()and the listener will be notified whenever the user clicked any emoji. - The recent emoji provider can be provided with
setRecentEmojiProvider(). This is an optional function. If the recent emoji provider isn’t set, a default recent emoji provider will be used by the library. The default behavior is defined as follows: 1) all selected emojis will be saved per-app level in shared preferences. 2) the picker will display at most 3 rows of selected emojis, deduped, in reverse chronological order. - Introduced
EmojiViewItemclass that holds the displayed emoji and its emoji variants. - Introduced
RecentEmojiProviderinterface that can be implemented to provide a recent emoji list. TherecentEmojiProvideris responsible for providing emojis in the “Recently Used” category.
Version 1.3
Version 1.3.0-beta01
January 25, 2023
androidx.emoji2:emoji2-*:1.3.0-beta01 is released. Version 1.3.0-beta01 contains these commits.
New Features
- Querying system exclusions.
- Replacing the spans for custom drawing code.
- And fixed a bug where background spans were not correctly applied behind
EmojiSopans. - This release adds APIs necessary to support
EmojiCompatin Compose. Expect compose support for emoji compat in a near future release.
Version 1.3.0-alpha01
January 11, 2023
androidx.emoji2:emoji2-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.
New APIs for low level interactions
- Querying system exclusions
- Replacing the spans for custom drawing code
- And fixed a bug where background spans were not correctly applied behind
EmojiSopans. - This release adds APIs necessary to support
EmojiCompatin Compose. Expect compose support for emoji compat in a near future release.
API Changes
- Added ability to query system exclusions to
TypefaceEmojiRasterizer. (I5653e) - Added new API
EmojiCompat.SpanFactoryfor replacing defaultEmojiSpanbehavior with custom drawing and sizing code. (Ib69d9) - Added
EmojiCompatto Compose (I96f37, b/139326806)
Bug Fixes
- Emoji2 will now correctly draw backgrounds from
BackgroundSpan. (Ide6a8, b/230525134) - Finalize AppCompat APIs for 1.5.0-beta01 (I2a43d, b/236866227)
Version 1.2
Version 1.2.0
August 10, 2022
androidx.emoji2:emoji2-*:1.2.0 is released. Version 1.2.0 contains these commits.
Important changes since 1.1.0
This is a bugfix release. No new features or APIs added since 1.1.0.
However, apps using PrecomputedText or TextView.setText(char[]) should
prioritize bumping to this version.
The following bugs were fixed:
Emoji2will add emoji toPrecomputedTextby discarding previously precomputed text layout. (I47d06, b/211231958)- Backport editor crash fix from Android P to
EditTextthat is configured to use emoji2. (Ifd709, b/216891011) - Fix crash when emoji2 loads font and
TextView.setText(char[])was used. (Id511e, b/206859724)
Version 1.2.0-rc01
July 27, 2022
androidx.emoji2:emoji2-*:1.2.0-rc01 is released. Version 1.2.0-rc01 contains these commits.
- No changes since the last beta version.
Version 1.2.0-beta01
July 13, 2022
androidx.emoji2:emoji2-*:1.2.0-beta01 is released. Version 1.2.0-beta01 contains these commits.
New Features
- No changes from the last version (this release is to support the AppCompat release).
Version 1.2.0-alpha04
April 20, 2022
androidx.emoji2:emoji2-*:1.2.0-alpha04 is released. Version 1.2.0-alpha04 contains these commits.
New Features
- No changes in this release.
Version 1.2.0-alpha03
April 6, 2022
androidx.emoji2:emoji2-*:1.2.0-alpha03 is released. Version 1.2.0-alpha03 contains these commits.
New Features
- No changes from the last version (this release is to support the appcompat release).
Version 1.2.0-alpha02
March 23, 2022
androidx.emoji2:emoji2-*:1.2.0-alpha02 is released. Version 1.2.0-alpha02 contains these commits.
Bug Fixes
- Emoji2 will add emoji to
PrecomputedTextby discarding previously precomputed text layout. (I47d06, b/211231958) - Backport editor crash fix from Android P to EditText that is configured to use emoji2. (Ifd709, b/216891011)
- Fix crash when emoji2 loads font and
TextView.setText(char[])was used. (Id511e, b/206859724)
Version 1.2.0-alpha01
February 23, 2022
androidx.emoji2:emoji2-*:1.2.0-alpha01 is released. Version 1.2.0-alpha01 contains these commits.
No changes since 1.1.0.
1.1
Version 1.1.0
February 23, 2022
androidx.emoji2:emoji2-*:1.1.0 is released. Version 1.1.0 contains these commits.
Important changes since 1.0.0
- emoji2-bundled contains emoji 14 font
- New
getEmojiMatchAPI returns accurate information for keyboards to decide how an emoji will display in the presence of an emojicompat font that's behind the system font - Bugfix for
NumberKeyListenerthat makes digit input correctly filter characters.
Version 1.1.0-rc01
February 9, 2022
androidx.emoji2:emoji2-*:1.1.0-rc01 is released. Version 1.1.0-rc01 contains these commits.
New Features
No changes from beta.
New features compared to emoji2 1.0.0:
emoji2-bundledcontains emoji 14 font- New
getEmojiMatchAPI returns accurate information for keyboards to decide how an emoji will display in the presence of an emojicompat font that's behind the system font - Bugfix for
NumberKeyListenerthat makes digit input correctly filter characters
Version 1.1.0-beta01
January 26, 2022
androidx.emoji2:emoji2-*:1.1.0-beta01 is released. Version 1.1.0-beta01 contains these commits.
Bug Fixes
- androidx-emoji2 beta01 release. No changes from alpha01 (Ic61d9)
Version 1.1.0-alpha01
December 15, 2021
androidx.emoji2:emoji2-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.
New Features
emoji2-bundledcontains emoji 14 font- New
getEmojiMatchAPI returns accurate information for keyboards to decide how an emoji will display in the presence of an emojicompat font that's behind the system font - Bugfix for
NumberKeyListenerthat makes digit input correctly filter characters
API Changes
- Add new API
getEmojiMatchto allow keyboards to more accurately lookup emoji match behavior in emojicompat. - Deprecate
hasEmojiGlyph, as its boolean return value is inaccurate when testing against a font that is older than the platfrom emoji font. Replace withgetEmojiMatch. (Ie693d)
Bug Fixes
- Emoji2 will not wrap instances of
NumberKeyListener, allowing the the locale to be configured byTextView. - Appcompat will not wrap instances of
NumberKeyListenerpassed tosetKeyListener, allowingTextViewto correctly configure the locale onNumberKeyListeners. (Ibf113, b/207119921)
1.0
Version 1.0.1
December 15, 2021
androidx.emoji2:emoji2-*:1.0.1 is released. Version 1.0.1 contains these commits.
Bug Fixes
Emoji2will not wrap instances ofNumberKeyListener, allowing the locale to be configured byTextView.- Appcompat will not wrap instances of
NumberKeyListenerpassed tosetKeyListener, allowingTextViewto correctly configure the locale onNumberKeyListeners. (Ibf113, b/207119921)
Version 1.0.0
November 17, 2021
androidx.emoji2:emoji2-*:1.0.0 is released. Version 1.0.0 contains these commits.
Major features of 1.0.0
androidx.emoji2 replaces androidx.emoji with additional capabilities:
- APK size reduction vs androidx.emoji
- Automatic configuration
- Added as a dependency to appcompat 1.4
For more information about androidx.emoji2 see Supporting Modern Emoji and our Android Dev Summit talk Displaying ALL the emojis in your app Android Dev.
Version 1.0.0-rc01
October 27, 2021
androidx.emoji2:emoji2-*:1.0.0-rc01 is released. Version 1.0.0-rc01 contains these commits.
- No changes since beta02.
Emoji2 Version 1.0.0-beta01
September 15, 2021
androidx.emoji2:emoji2-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
API Changes
Added
setLoadingExecutortoFontRequestEmojiCompatConfig, which replaces the previous API ofsetHandler. This API allows apps to configureFontRequestEmojiCompatConfigto use any background executor.This change is a breaking change from
androidx.emoji:emoji, sosetHandleris retained as a no-op Deprecated API to aid in migration. (I6cd48)EmojiCompat correctly sets
EditorInfo.extrason Android 11- Custom widgets that use IME not subclassing EditText may call
EmojiCompat.updateEditorInfoto inform IME that they support EmojiCompat processing. (I1ea9b)
- Custom widgets that use IME not subclassing EditText may call
Bug Fixes
- Fix
DefaultEmojiCompatConfigto correctly lookup emoji font provider on API 19 and 28. This fixes a bug introduced in emoji2 1.0.0-alpha01. (Ib33d8, b/197906329)
Version 1.0.0-alpha03
June 30, 2021
androidx.emoji2:emoji2-*:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.
New Features
This release is a bugfix and stabilization release.
- EmojiEditTextHelper now allows
nullto be passed as a KeyListener. This allows the platform behavior of allowing nulls to be applied to emoji supporting EditText implementations. - When using EmojiCompatInitializer initial startup delay is improved to trigger after the first Activity resumes. This allows app startup to happen uncontended, and avoids loading the font for app starts that never show a UI. After a short delay, EmojiCompat will create a thread to load the emoji font.
- A new dependency on
androidx.lifecycle:lifecycle-processfromandroidx.emoji2:emoji2is added to implement the delay. This will have negligible APK size impact for apps that already include lifecycle (such as apps with appcompat).
API Changes
- Allow null KeyListener in AppCompatEditText. This reverses the non-null annotation that was added to AppCompatEditText in 1.4.0-alpha01 and restores the previous behavior when passed null. (I21482, b/189559345)
Bug Fixes
- Change EmojiCompatInitializer to delay font loading until
500ms after the first
Activity.onResume. This allows an activity to performApplication.onCreateandActivity.onCreateuncontended, while still ensuring that the emoji font is loaded shortly after app startup. (I4bff7)
Version 1.0.0-alpha02
June 2, 2021
androidx.emoji2:emoji2:1.0.0-alpha02, androidx.emoji2:emoji2-views:1.0.0-alpha02, and androidx.emoji2:emoji2-views-helper:1.0.0-alpha02 are released. Version 1.0.0-alpha02 contains these commits.
API Changes
- Renamed package in
emoji2-views-helpertoandroidx.emoji2.viewsintegration. This is a breaking change for AppCompat1.4.0-alpha01, and apps must ensure AppCompat dependency is updated to use the new emoji2 version. (Ie8397)
Version 1.0.0-alpha01
May 18, 2021
androidx.emoji2:emoji2:1.0.0-alpha01, androidx.emoji2:emoji2-views:1.0.0-alpha01, and androidx.emoji2:emoji2-views-helper:1.0.0-alpha01 are released. Version 1.0.0-alpha01 contains these commits.
Features in this initial release
Integrating emojicompat is recommended for all apps to support modern emoji from API19. All user generated content in your app contains 🎉.
EmojiCompat has moved from the androidx.emoji artifacts to the new androidx.emoji2, now in alpha01. The new artifacts replace the previous version.
emoji2 is added as a dependency to AppCompat starting in AppCompat 1.4.0-alpha01 and is enabled by default for AppCompat views.
The emoji2 artifact introduces a new automatic configuration using the androidx.startup library. You no longer need to write any 👨🏽💻 code to display 🐻❄️.
Changes in emoji2 from emoji
- Added new automatic configuration
EmojiCompatInitializerusingandroidx.startup. - Added new default configuration that uses service location to find a downloadable fonts provider in
DefaultEmojiCompatConfiguration. - Classes moved from
androidx.emojipackage toandroidx.emoji2. - Split
EmojiTextViewand related views to a separate artifactemoji2-views. This should only be used if your app doesn't use appcompat. - Extracted helpers for integrating emojicompat into custom views into a separate artifact
emoji2-views-helper. - Added nullability annotations.
- Helpers in
emoji2-views-helpermay now be used even whenEmojiCompatis not initialized (previously they threw an exception).
What dependency should you add?
- Apps with AppCompat should upgrade to appcompat version AppCompat
1.4.0-alpha01or higher. - Apps without AppCompat using
TextView/EditTextfrom platform should useEmojiTextViewand related classes fromemoji2-views.
How to support in custom views
- Apps with AppCompat should extend
AppCompatTextView,AppCompatButton, etc. instead of platformTextView, etc. - Apps without AppCompat should add
androidx.emoji2:emoji2-views-helperdependency and use helpers to integrate with customTextVieworEditTextsubclasses.
Configuring automatic initialization
Apps can disable the automatic initialization by adding this to the manifest:
<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>This disables automatic configuration, and you can then pass a custom configuration to
EmojiCompat.init. The default configuration for the system may be retrievedDefaultEmojiCompatConfig.create(context)for further configuration before passing toEmojiCompat.init.

