您的位置:首页 > 移动开发 > Android开发

Android 输入法表情实现

2015-08-21 14:34 381 查看
首先Android 设备包含表情符号,表情符号使用的是utf-16的编码,然后表情符号的Unicode 编码在:http://code.iamcal.com/php/emoji/,这里面有的表情符号占两个字节,有的占四个字节,两个字节的符号,可以直接转char再转CharSequence 输入提交就可以,但我的显示成黑白的表情符,可能是字库里这么设的。对于四个字节的符号,取值范围并不是全部,而是0x010000-0x10ffff;编码大于0xffff的utf-16的编码一半映射在0xd800-0xdbff,另一半映射在0xdc00-0xdfff;当读取的时候发现前面的取值范围在0xd800-0xdbff之间,则需要与后面的两个字节一起读取。

在获得表情符号的unicode编码是四字节的时候,获取前后的两段映射,具体算法如下:

public char[] getEM(int unicode){

char[] unicodearr = new char[2];

unicodearr[0] = (char) (Math.floor((unicode-0x10000)/0x400)+0xD800);

unicodearr[1] = (char) ((unicode-0x10000) % 0x400+0xDC00);

return unicodearr;

}

根据返回的两段映射转换为CharSequence chs = String.valueOf(ud);//ud为返回值,即返回的两段映射

chs就可以输入给编辑栏,就是该unicode的表情符号;

参考:http://www.ruanyifeng.com/blog/2014/12/unicode.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: