如何让系统 Android 表情符号可由 unicode 字符绘制?
How to get system Android emoji drawable by unicode character?
我想实现一个 android 表情符号键盘,只使用表情符号 unicode 数组,不需要任何额外资源。
所以对于emoji unicode字符,我需要从android系统中获取drawable,如果系统不支持该字符,我就忽略这个字符。
经过一些基础研究,
- 表情符号,
https://github.com/rockerhieu/emojicon
- 表情符号,
https://github.com/ankushsachdeva/emojicon
这些工具全部使用自制资源
使用TextView setText
, tv.setText("\u263A");
TextView可以显示资源,但是如何获取资源?
问题来了——系统无法确定可以显示哪些字符。字体可以。字体需要定义如何绘制它将显示的每个字符。这就是为什么你会看到方框或?对于丢失的字符——这是字体的默认渲染。 Android 上没有方法来测试一个字符是否会以给定的字体显示(尽管它会非常好)。由于无法知道 EditText 使用的是什么字体,因此也无法知道是否支持给定的字符。最好的办法是限制自己使用默认 Android 系统字体中定义的字符。但即便如此,您还是假设 OEM 没有使用不同的默认字体,用户没有覆盖它,应用程序也没有覆盖它。基本上,你被迫猜测和希望。
我想实现一个 android 表情符号键盘,只使用表情符号 unicode 数组,不需要任何额外资源。
所以对于emoji unicode字符,我需要从android系统中获取drawable,如果系统不支持该字符,我就忽略这个字符。
经过一些基础研究,
- 表情符号,
https://github.com/rockerhieu/emojicon
- 表情符号,
https://github.com/ankushsachdeva/emojicon
这些工具全部使用自制资源
使用TextView setText
, tv.setText("\u263A");
TextView可以显示资源,但是如何获取资源?
问题来了——系统无法确定可以显示哪些字符。字体可以。字体需要定义如何绘制它将显示的每个字符。这就是为什么你会看到方框或?对于丢失的字符——这是字体的默认渲染。 Android 上没有方法来测试一个字符是否会以给定的字体显示(尽管它会非常好)。由于无法知道 EditText 使用的是什么字体,因此也无法知道是否支持给定的字符。最好的办法是限制自己使用默认 Android 系统字体中定义的字符。但即便如此,您还是假设 OEM 没有使用不同的默认字体,用户没有覆盖它,应用程序也没有覆盖它。基本上,你被迫猜测和希望。