一,对emoji表情的理解
emoji表情是一种表情符号,在代码中它现在其实是一组遵循Unicode的编码,即每一个表情符号都对应了一个Unicode编码。更进一步说,emoji表情实际上是一组Unicode编码与一组表情描述之间的一一对应。注意,这里所说的不是表情图片,而是表情描述。那么图片的实现是由谁来负责的呢?图片是由各个系统或者软件针对统一的表情描述来各自实现的,他们都遵循统一的Unicode编码规范。也就是说Unicode编码其所对应的表情描述是统一的,是所有人都要共同遵守的一套标准或者规范,而具体的表情图片则可能因平台的不同而产生差异,比如Android和ios。以非常火的“笑哭”表情为例,如下表
ios | Android(>=4.4) | | Unicode | Description |
U+1F602 | face with tears of joy |
对于描述为”face with tears of joy",Unicode编码为”U+1F602”的表情,ios,android,和twitter分别做了不同的实现。
更过关于emoji表情编码的对应可以在这里找到: 可能需要vpn访问
二, 如何在Android系统中操作系统自带的emoji表情
在android中,我们可以只用go输入法或者搜狗输入发来输入emoji表情,对于用户这没有任何问题。但是对于程序员来说如何在程序中输入或者得到一个emoji表情呢?比如我们想通过textview.setText()方法来输入一个emoji表情。
其实通过emoji表情的通用Unicode编码就可以实现,直接使用Character.toChars()方法将unicode编码转换为一个char数组,再将这个char数组转换成为字符串就可以直接操作了,系统会自动将其解析为表情图片,可以直接显示在textview组件当中,不需要我们做任何其他的事情。
三, 具体的代码实现
private void setEmojiToTextView(){ int unicodeJoy = 0x1F602; String emojiString = getEmojiStringByUnicode(unicodeJoy); myTextView.setText(emojiString);}private String getEmojiStringByUnicode(int unicode){ return new String(Character.toChars(unicode));}