在Android中显示来自unicode的表情符号

时间:2017-09-03 16:55:59

标签: android unicode emoji display

我有这个简单的代码,可以在按钮的文字中显示心形卡片套装:

int intHearts= 0x2665;
String stringHearts= new String(Character.toChars(intHearts));
btnHearts.setText(stringHearts);

它在模拟器(Android 7)中正常工作,显示红色表情符号。相反,当我从我的Asus Zenfone 2(Android 5)运行应用程序时,我只能看到心中的黑色字符♥。那么如何让我的手机显示红色表情符号?

2 个答案:

答案 0 :(得分:2)

在介绍emojis之前很久就将U + 2665添加到Unicode中。这就是为什么这个角色(文本和表情符号)有两种呈现模式的原因。默认情况下使用哪种字符显示有点特定于应用。由于遗留原因,通常使用文本显示(黑心)。

您可以通过附加变体选择器字符来手动指定字符演示。 U + FE0E用于文本演示。表情符号演示的U + FE0F。

不幸的是,在Android 6.0之前,Android似乎只支持文本显示(忽略变体选择器)。从那以后,只有表情符号表示(再次,忽略变异选择器)。

要解决此问题,您可以使用EmojiCompat支持库。

答案 1 :(得分:0)

设置unicode。

int smileEmoji = 0x1F60A;

你想要它展示的地方。

getEmojiByUnicode(smileEmoji)

方法。

public String getEmojiByUnicode(int unicode){
    return new String(Character.toChars(unicode));
}