Comment puis-je mettre des caractères utf-16 dans une ressource de chaîne Android?

Je souhaite utiliser Emojis dans les chaînes de ma application. Toutes les cordes résident, bien sûr, dans strings.xml

Le problème est que tous les Emojis ne sont pas compatibles avec 16 bits. Certains Emojis peuvent être représentés comme "normal" hexagone 16 bits: '\ u26FF', mais certains sont des hexs 32 bits (UTF-16), généralement représentés par: '\ x1F600' . Je n'ai aucun problème à traiter avec ceux dans l'application, dans le code. Mais le fichier de ressource strings.xml est codé par UTF8 et ne traite pas correctement avec des caractères d'échappement non 16 bits.

  • Promesses pour Android?
  • Puis-je imiter la mise à niveau de l'application avec ADB?
  • Création d'une disposition différente pour le téléphone Android et la tablette
  • Changer l'élévation de l'actionBar par thème
  • Android: modification de la couleur d'arrière-plan de l'activité (vue principale)
  • AVERTISSEMENT: File.mkdir () est ignoré
  • J'ai essayé d'utiliser '\ x1F600' – parce que j'ai vu que '\ u26FF' fonctionne très bien. Mais il ne semble pas dévorer le char de l'échappement 'x'. Il n'a pas non plus aimé la notation regexp '\ x {1F600}'

    J'ai donc fini par utiliser un espace réservé de chaîne '% 1 $ s' et remplir le Emoji dans un code comme celui-ci:

    // greeting_3 is defined as: "hello there %1$s!" String s = context.getString(R.string.greeting_3, "😜"); // OR: String s = context.getString(R.string.greeting_3, new String(Character.toChars(0x1F61C))); 

    Ce n'est pas une solution très élégante … Existe-t-il un bon moyen de mettre des caractères UTF-8 32 bits dans strings.xml?

  • Problème de mise en page relative d'Android avec la gravité
  • Comment gérer correctement la rotation de l'écran avec un ViewPager et des fragments imbriqués?
  • Le bouton ActionBar 'up' détruit l'activité parent, le "retour" ne fonctionne pas
  • Gradle n'a pas réussi à synchroniser avec 'impossible de trouver une bibliothèque optionnelle'
  • CollapsingToolbarLayout ne s'effondre pas lorsque EditText se concentre
  • Le getBestProvider de LocationManager renvoie null
  • 2 Solutions collect form web for “Comment puis-je mettre des caractères utf-16 dans une ressource de chaîne Android?”

    Mais le fichier de ressource strings.xml est UTF8

    Si c'est UTF-8 encodé, vous pouvez mettre vos emojis directement. Mais vous risquez que votre éditeur ou un autre logiciel les détruit.

    Si vous les mettez en XML, vous pouvez essayer d'utiliser des entités XML: 😀 , Je ne suis pas sûr de la façon dont Android les prend en charge.

    Vous pouvez également utiliser des paires de substitution: convertissez l'emoji en UTF-16 et utilisez la norme pour échapper. Vous pouvez, par exemple, consulter cette page, il vous indique même comment créer une chaîne litarale en Java: http://www.fileformat.info/info/unicode/char/1F600/index.htm

    😜 → U + 1F600 → "\uD83D\uDE00"

    Je suppose que vous développez quelque chose comme Emoji Keyboard. #EmojiCodeSheet peut vous aider à ce sujet

    #EmojiCodeSheet

    Lien de projet: https://github.com/shanraisshan/EmojiCodeSheet


    Tout emoji peut être représenté sous une forme différente

    1. Codepoint
    2. Chaîne

    Par exemple: SMILING_FACE_WITH_SUN_GLASS Emoji

    1. Codepoint : 0x1f60e
    2. String: 😎 (qui est \ uD83D \ uDE0E en fait)

    Vous pouvez facilement afficher des emojis dans Android soit en les enregistrant dans xml ou java, la liste est présente ci-dessous

    1. XML comme strings.xml
    2. Comme constante statique dans les fichiers JAVA

    Il suffit de remplacer ces codes emoji par les images emoji dans votre application Android, en faisant quelques lignes de code.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.