Les emoji standards sont actualisés chaque année Unicode, car les emoji sont de plus en plus utilisés rapidement pour tous les types d'applications.
Si votre application affiche du contenu Internet ou fournit du texte, nous vous recommandons recommandent d'utiliser les dernières polices emoji. Sinon, les emoji ultérieurs peuvent être s'affiche sous la forme d'une petite boîte carrée appelée tofu (☐) ou d'un autre matériau mal affiché des séquences d'emoji.
Android version 11 (niveau d'API 30) ou antérieure ne peut pas mettre à jour la police des emoji. Par conséquent, les applications qui les affichent sur ces versions doivent être mises à jour manuellement.
Voici des exemples d'emoji modernes.
Exemples | Version |
---|---|
🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (septembre 2021) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (septembre 2020) |
🥲 🥷🏿 🐻❄️ | 13.0 (mars 2020) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (octobre 2019) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (février 2019) |
La bibliothèque androidx.emoji2:emoji2
simplifie la rétrocompatibilité.
avec des versions antérieures d'Android. La bibliothèque emoji2
est une dépendance de
AppCompat
et ne nécessite aucune
une configuration supplémentaire.
Prise en charge des emoji dans Compose
BoM, mars 2023 (UI 1.4 de Compose) compatible avec les derniers emoji y compris la rétrocompatibilité avec les anciennes versions d'Android jusqu'à API 21. Cette page explique comment configurer des emoji modernes dans le système de vues. Voir la page Emoji dans Compose pour en savoir plus.
Prérequis
Pour vérifier que votre appli affiche correctement les nouveaux emoji, lancez-la sur un appareil exécutant Android version 10 (niveau 29 d'API) ou antérieure. Cette page contient des emoji modernes que vous peuvent s'afficher à des fins de test.
Utiliser AppCompat pour prendre en charge les derniers emoji
AppCompat
1.4 prend en charge les emoji.
Pour utiliser AppCompat
avec les emoji, procédez comme suit:
Vérifiez que votre module dépend de la version de la bibliothèque
AppCompat
1.4.0-alpha01 ou plus élevée.build.gradle // Ensure version is 1.4.0-alpha01 or higher. implementation "androidx.appcompat:appcompat.$appcompatVersion"
Assurez-vous que toutes les activités affichant du texte étendent
AppCompatActivity
.Kotlin
MyActivity.kt class MyActivity: AppCompatActivity { ... }
Java
MyActivity.java class MyActivity extends AppCompatActivity { ... }
Tester votre intégration en lançant votre application sur un appareil équipé d'Android 10 ou inférieure, et afficher la chaîne de test suivante. Assurez-vous que tous les caractères s'affiche correctement.
- 14.0: 🫠, 🫱🏼 🫲🏿, 🫰🏽
- 13.1: QuestionText 🌫️, 🧔🏻 VO️, 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲, 🥷🏿, 🔍 ❄️
- 12,1: 🧑🏻 🦰, 🧑🏿 🦯, DE 🤝 🤝 Aidez-nous à vous
- 12.0: 🦩, 🦻🏿, DE 🏼 🤝 Augmentez sans frais
Votre application affiche automatiquement les emoji rétrocompatibles sur tous les appareils qui
fournir un fournisseur de polices téléchargeables compatibles avec emoji2
, comme des appareils ;
fourni par les services Google Play.
Si votre application utilise AppCompat, mais affiche du tofu (☐)
Dans certains cas, votre application peut afficher du tofu au lieu de l'emoji approprié, même si
vous ajoutez la bibliothèque AppCompat
. Voici des explications possibles et
de Google Cloud.
Vous exécutez l'application sur un appareil récemment flashé ou sur un nouvel émulateur
Effacez les données des services Google Play de l'application pour effacer toute mise en cache des polices qui pourrait au démarrage. Le problème est généralement résolu au bout de quelques heures.
Pour effacer les données de l'application, procédez comme suit:
Accédez aux paramètres de votre appareil Android.
Appuyez sur Applications et notifications.
Appuyez sur Afficher toutes les applications ou sur Infos sur les applis.
Faites défiler les applications et appuyez sur Services Google Play.
Appuyez sur Stockage et cache.
Sélectionnez Vider le cache.
Votre application n'utilise pas de classe textuelle AppCompat.
Cela peut se produire si vous n'étendez pas AppCompatActivity
ou si vous instanciez un
dans le code, par exemple TextView
. Vérifiez les cas de figure suivants :
- L'activité étend
AppCompatActivity
. - Si vous créez la vue dans le code, utilisez la bonne
AppCompat
.
AppCompatActivity
gonfle automatiquement AppCompatTextView
à la place de
TextView
lorsque vous gonflez du code XML. Vous n'avez donc pas besoin de mettre à jour votre code XML.
Le téléphone de test ne prend pas en charge les polices téléchargeables
Vérifiez que DefaultEmojiCompatConfig.create
renvoie une configuration non nulle.
Un émulateur à un niveau d'API antérieur n'a pas mis à niveau les services Google Play
Si vous utilisez un émulateur à un niveau d'API antérieur, vous devrez peut-être mettre à jour le
services Google Play groupés pour emoji2
afin de trouver le fournisseur de polices. Pour ce faire,
connectez-vous au Google Play Store sur l'émulateur.
Pour vérifier qu'une version compatible est installée, procédez comme suit:
Exécutez la commande suivante :
adb shell dumpsys package com.google.android.gms | grep version
Vérifiez que la valeur de
versionCode
est supérieure à211200000
.
Assurer la compatibilité avec les emoji sans AppCompat
Si votre application ne peut pas inclure AppCompat
, elle peut utiliser emoji2
directement. Ce
nécessite plus d'efforts. N'utilisez cette méthode que si votre application ne peut pas utiliser AppCompat
.
Pour utiliser les emoji sans la bibliothèque AppCompat
, procédez comme suit:
Dans le fichier
build.gradle
de votre application, incluezemoji2
etemoji2-views
.build.gradle def emojiVersion = "1.0.0-alpha03" implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-views:$emojiVersion"
Le module
emoji2-views
fournit sous-classes deTextView
,Button
etEditText
qui implémententEmojiCompat
Ne pas l'utiliser dans une application qui inclutAppCompat
, car elle implémente déjàEmojiCompat
Dans le code XML et le code, quel que soit l'endroit où vous utilisez
TextView
,EditText
ouButton
– utiliserEmojiTextView
,EmojiEditText
ouEmojiButton
à la place.activity_main.xml <androidx.emoji2.widget.EmojiTextView ... /> <androidx.emoji2.widget.EmojiEditText ... /> <androidx.emoji2.widget.EmojiButton ... />
Si vous incluez le module
emoji2
, le système utilise la valeur téléchargeable par défaut fournisseur de polices pour charger la police des emoji automatiquement peu de temps après le démarrage de l'appli. Non une configuration supplémentaire est nécessaire.Pour tester votre intégration, lancez votre application sur un appareil équipé d'Android 11 ou et les chaînes de test suivantes s'affichent. Assurez-vous que tous les caractères s'affiche correctement.
- 14.0: 🫠, 🫱🏼 🫲🏿, 🫰🏽
- 13.1: QuestionText 🌫️, 🧔🏻 VO️, 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲, 🥷🏿, 🔍 ❄️
- 12,1: 🧑🏻 🦰, 🧑🏿 🦯, DE 🤝 🤝 Aidez-nous à vous
- 12.0: 🦩, 🦻🏿, DE 🏼 🤝 Augmentez sans frais
Utiliser EmojiCompat sans widgets
EmojiCompat
utilise EmojiSpan
pour
afficher les bonnes images. Elle doit donc convertir
CharSequence
dans un
Un objet Spanned
avec des objets EmojiSpan
.
La classe EmojiCompat fournit la méthode process()
pour convertir CharSequences
.
dans des instances Spanned
. Cette méthode vous permet d'appeler process()
dans
mettre en arrière-plan et mettre en cache les résultats, ce qui améliore les performances de votre application.
Kotlin
val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")
Java
CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");
Utiliser EmojiCompat pour les éditeurs du mode de saisie
La classe EmojiCompat
permet aux claviers d'afficher les emoji compatibles avec l'application.
avec lesquels ils interagissent. Éditeurs du mode de saisie
(IME) peuvent utiliser
getEmojiMatch()
pour vérifier si une instance de EmojiCompat
est capable d'afficher un
emoji. Cette méthode utilise un objet CharSequence
d'un emoji et renvoie true
si EmojiCompat
peut détecter et afficher l'emoji.
Le clavier peut également vérifier la version de EmojiCompat
compatible avec l'appli
pour déterminer quel emoji afficher dans la palette. Pour vérifier la version, si
le clavier peut rechercher les touches suivantes
EditorInfo.extras
bundle:
EDITOR_INFO_METAVERSION_KEY
: représente la version des métadonnées de l'emoji utilisée par l'application. Si cette clé n'existe pas, cela signifie que l'application n'utilise pasEmojiCompat
.EDITOR_INFO_REPLACE_ALL_KEY
: si la clé existe et est définie surtrue
, l'application configureEmojiCompat
pour remplacer tous les emoji, même s'ils sont présents dans le système.
Découvrez comment configurer une instance de EmojiCompat.
Utiliser des emoji dans les affichages personnalisés
Si votre application comporte des vues personnalisées
sous-classes directes ou indirectes de TextView
(par exemple, Button
,
Switch
ou EditText
), et afficher dans ces vues des vues générées par les utilisateurs
contenu, elles doivent chacune mettre en œuvre
EmojiCompat
La procédure varie selon que votre application utilise ou non la bibliothèque AppCompat
.
Ajouter des vues personnalisées pour les applications avec AppCompat
Si votre application utilise AppCompat
, étendez l'implémentation de AppCompat
au lieu de
l'implémentation de la plate-forme. Référez-vous au tableau suivant pour découvrir comment
élargissez votre nombre de vues dans AppCompat
:
Au lieu d'étendre... | Prolonger |
---|---|
TextView
|
AppCompatTextView
|
EditText
|
AppCompatEditText
|
ToggleButton
|
AppCompatToggleButton
|
Switch
|
SwitchCompat
|
Button
|
AppCompatButton
|
CheckedTextView
|
AppCompatCheckedTextView
|
RadioButton
|
AppCompatRadioButton
|
CheckBox
|
AppCompatCheckBox
|
AutoCompleteTextView
|
AppCompatAutoCompleteTextView
|
MultiAutoCompleteTextView
|
AppCompatMultiAutoCompleteTextView
|
Ajouter des vues personnalisées pour les applications sans AppCompat
Si votre application n'utilise pas AppCompat
, utilisez les assistants d'intégration de vues dans
emoji2-views-helper
conçus pour être utilisés dans les vues personnalisées. Ces
sont les assistants utilisés par la bibliothèque AppCompat
pour implémenter la prise en charge des emoji.
Procédez comme suit pour prendre en charge les vues personnalisées pour les applications qui n'utilisent pas
AppCompat
Ajoutez la bibliothèque
emoji2-views-helper
:implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
Suivez les instructions pour inclure
EmojiTextViewHelper
ouEmojiEditTextHelper
dans les vues personnalisées de votre application.Tester votre intégration en lançant votre application sur un appareil équipé d'Android 10 ou inférieure, et afficher la chaîne de test suivante. Assurez-vous que tous les caractères s'affiche correctement.
- 14.0: 🫠, 🫱🏼 🫲🏿, 🫰🏽
- 13.1: QuestionText 🌫️, 🧔🏻 VO️, 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲, 🥷🏿, 🔍 ❄️
- 12,1: 🧑🏻 🦰, 🧑🏿 🦯, DE 🤝 🤝 Aidez-nous à vous
- 12.0: 🦩, 🦻🏿, DE 🏼 🤝 Augmentez sans frais
Fonctionnalités en option de gestion des emoji2
Après avoir inclus la bibliothèque emoji2
dans votre application, vous pouvez ajouter l'option facultative
décrites dans cette section.
Configurez Emoji2 pour utiliser une autre police ou un fournisseur de polices téléchargeable.
Pour configurer emoji2
afin d'utiliser une autre police ou un fournisseur de polices téléchargeables, procédez comme suit :
les éléments suivants:
Désactivez le
EmojiCompatInitializer
en ajoutant le code suivant à votre fichier manifeste:<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>
Effectuez l'une des opérations suivantes :
Utilisez la configuration par défaut en appelant
DefaultEmojiCompatConfiguration.create(context)
Créez votre propre configuration pour charger des polices à partir d'une autre source à l'aide de
EmojiCompat.Config
Cette classe fournit plusieurs options pour modifier votreEmojiCompat
comme décrit dans la section suivante.
Modifier votre comportement EmojiCompat
Vous pouvez utiliser une instance de EmojiCompat.Config
pour modifier EmojiCompat
comportemental.
L'option de configuration la plus importante
setMetadataLoadStrategy()
,
qui contrôle le moment où EmojiCompat
charge la police. Le chargement des polices commence dès que
EmojiCompat.load()
est appelé, ce qui déclenche tous les téléchargements nécessaires. La
système crée un thread pour le téléchargement des polices, sauf si votre application en fournit un.
LOAD_STRATEGY_MANUAL
vous permet de contrôler quand EmojiCompat.load()
est appelé.
LOAD_STRATEGY_DEFAULT
lance le chargement de manière synchrone dans l'appel
EmojiCompat.init()
.
La plupart des applis utilisent LOAD_STRATEGY_MANUAL
pour contrôler le thread et le timing
de chargement des polices. Votre application doit différer l'affichage du premier écran pour
pour éviter d'introduire une latence au démarrage. EmojiCompatInitializer
suit cette page
et reporte le chargement de la police des emoji jusqu'à la reprise du premier écran.
Utilisez les méthodes suivantes à partir de la classe de base pour définir d'autres aspects de configuration:
setReplaceAll()
: détermine siEmojiCompat
remplace tous les emoji trouvés par des instances surEmojiSpan
. Par défaut, lorsqueEmojiCompat
déduit que le système peut afficher un emoji, cela ne le remplace pas. Si défini surtrue
,EmojiCompat
remplace tous les emoji par des objetsEmojiSpan
.setEmojiSpanIndicatorEnabled()
: indique siEmojiCompat
remplace un emoji par unEmojiSpan
. Si la valeur esttrue
,EmojiCompat
dessine un arrière-plan pour l'élémentEmojiSpan
Cette méthode est principalement utilisée à des fins de débogage.setEmojiSpanIndicatorColor
: définit la couleur pour indiquer uneEmojiSpan
. La valeur par défaut estGREEN
registerInitCallback()
: Informe une application de l'état de l'initialisation deEmojiCompat
.
Ajouter des écouteurs d'initialisation
Les classes EmojiCompat
et EmojiCompat.Config
fournissent les
registerInitCallback()
et
unregisterInitCallback()
pour enregistrer et annuler l'enregistrement des rappels d'initialisation. Votre application utilise ces
des rappels à attendre que EmojiCompat
soit initialisé avant de traiter les emoji sur
dans un thread d'arrière-plan ou dans une vue personnalisée.
Pour utiliser ces méthodes, créez une instance de la classe
EmojiCompat.InitCallback
. Appelez ces méthodes et transmettez à l'instance de
EmojiCompat.InitCallback
. Une fois l'initialisation réussie,
La classe EmojiCompat
appelle la méthode
onInitialized()
. Si l'initialisation de la bibliothèque échoue, la classe EmojiCompat
appelle la méthode
onFailed()
.
Pour vérifier l'état d'initialisation à tout moment, appelez la méthode
getLoadState()
. Cette méthode renvoie l'une des valeurs suivantes:
LOAD_STATE_LOADING
,
LOAD_STATE_SUCCEEDED
,
ou
LOAD_STATE_FAILED
Assurer la compatibilité avec les polices groupées avec emoji2
Vous pouvez utiliser l'artefact emoji2-bundled
pour grouper une police emoji dans votre application.
Toutefois, comme la police NotoColorEmoji
dépasse 10 Mo, nous vous recommandons
recommandez d'utiliser des polices téléchargeables dans votre application lorsque cela est possible. La
L'artefact emoji2-bundled
est destiné aux applis sur des appareils non compatibles
des polices téléchargeables.
Pour utiliser l'artefact emoji2-bundled
, procédez comme suit:
Incluez les artefacts
emoji2-bundled
etemoji2
:implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
Configurez
emoji2
pour utiliser la configuration groupée:Kotlin
EmojiCompat.init(BundledEmojiCompatConfig(context))
Java
EmojiCompat.init(new BundledEmojiCompatConfig(context));
Testez l'intégration en suivant les étapes précédentes pour inclure
emojicompat
avec ou sansAppCompat
. Assurez-vous que la chaîne de test s'affiche correctement.- 14.0: 🫠, 🫱🏼 🫲🏿, 🫰🏽
- 13.1: QuestionText 🌫️, 🧔🏻 VO️, 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲, 🥷🏿, 🔍 ❄️
- 12,1: 🧑🏻 🦰, 🧑🏿 🦯, DE 🤝 🤝 Aidez-nous à vous
- 12.0: 🦩, 🦻🏿, DE 🏼 🤝 Augmentez sans frais
Impact de la configuration automatique d'EmojiCompat
Le système applique la configuration par défaut
à l'aide de la bibliothèque de démarrage
EmojiCompatInitializer
et
DefaultEmojiCompatConfig
Lorsque la première activité a repris dans votre application, l'initialiseur programme les emoji. le chargement des polices. Ce bref délai permet à votre application d'afficher son contenu initial toute latence potentielle due au chargement de polices dans un thread d'arrière-plan.
DefaultEmojiCompatConfig
recherche une police téléchargeable installée par le système
fournisseur qui implémente l'interface EmojiCompat
, comme Google Play
services. Sur les appareils équipés des services Google Play, la police est chargée à l'aide de la méthode
services Google Play.
L'initialiseur crée un thread d'arrière-plan pour charger la police des emoji, ainsi que la police
L'expiration du téléchargement peut prendre jusqu'à 10 secondes. Une fois que la police est
téléchargé, il faut environ 150 millisecondes
sur un thread en arrière-plan pour
initialisez EmojiCompat
.
Reporter l'initialisation de EmojiCompat
, même si vous désactivez
EmojiCompatInitializer
Si vous configurez manuellement
EmojiCompat
, appelez EmojiCompat.load()
après son affichage
le premier écran de votre application pour éviter les conflits en arrière-plan.
de chargement de l'écran.
Après le chargement, EmojiCompat
utilise environ 300 Ko de RAM pour contenir l'emoji.
de métadonnées.