显示输入法的内置表情符号键

display built-in emoji keys for inputmethod

我正在为 android 构建一个自定义软键盘,并希望添加一个布局以包含类似于默认 android 键盘 (AOSP) 所做的表情符号键。我四处搜索,但似乎大多数人都在尝试从图像中显示自定义表情符号。我想显示 Android 自带的内置图标(如下图):

看来我应该能够使用 Unicode 字符从键盘发送图像,但我的第一次尝试似乎只生成了旧版本的表情符号。我如何支持 phone 可以处理的最新表情符号?另外,如何在键盘上显示如上图所示的表情符号?

转到 https://en.m.wikipedia.org/wiki/Emoji 查看您的设备支持哪些 unicode 表情符号。

如您所知,显示的表情符号取决于您使用的字体,因此要获取最新的表情符号,请使用 NotoColorEmoji.ttf 作为您应用的字体。

Emoticons-Keyboard

1) 而不是 emitos,我正在用包含 Unicode 序列的 TextView 替换包含资产的 ImageView。

在交叉引用支持的 Unicode 序列以及 Visual Unicode 数据库后,我意识到 **u1F601** 是 32 位 Unicode 表示, 16bit表示可以这样设置:

EditText messageInput = (EditText) findViewById(R.id.message_input);
messageInput.getText().append("\ud83d\ude01");

2) http://android.appstorm.net/how-to/customization/how-to-use-emojis-on-your-android-device/

表情符号支持并不像您想象的那样有效。没有所有 android 设备都支持的通用表情符号集,您的设备支持的表情符号在不同设备上的显示可能有所不同。表情符号在 Android 上以 2 种方式中的一种完成。

1) 统一码。设备支持的表情符号取决于应用程序使用的字体。您只需像发送普通文本一样发送 unicode,然后通过显示该字符将其显示在键盘上。对于此方法,您可以猜测 phone 将支持哪些方法。这完全是猜测,因为它取决于应用程序使用的字体。

2)图像跨度。您将 ImageSpannable 嵌入到您通过 commitText 发送的文本中。这样做的好处是你确定你有一个图像(你需要在你的应用程序中包含图像)。缺点是它无法发送到另一台设备,无法保存,并且可能无法在所有应用程序中使用(它们可能无法显示可跨越的对象)。

感谢所有建议。我在自定义键盘中显示表情符号布局的工作如下:

  1. 在 .xml 布局文件中,对于要添加的每个表情符号,创建如下一行:<Key android:codes="0x1F602" android:keyLabel="\ud83d\ude02"/>

  2. 提交密钥时,使用:getCurrentInputConnection().commitText(String.valueOf(Character.toChars(primaryCode)), 1);