在Android项目中支持emoji

首先我要吐槽下坑爹的csdn文章发布系统,之前一直用网易博客,除了代码显示不是很强大,当然文本编辑也跟csdn一样烂,但是人家支持word发博啊,方便多了。 抓狂

最近为了要做一个项目,需要显示emoji表情,而且考虑到要与IOS端同步(两端的emoji编码格式必须相同)。

结合网上找到的结果,分析有以下3种方法

1.直接使用一个可以支持emoji的字库。最简单,但是字库不好找,而且字库效果是黑白的,而且比较占用内存。

2.获得系统root权限,更改系统字库,前面的变种。这样的话可以全局支持。不像第一种,对每一个想使用emoji的控件要分别设置。但是缺点有一是不是所有手机都root了,二同1,三是用户会很反感吧,一个破程序要改我系统字库.

3.直接写一个表情管理类,使用emoji图片。这个代码量过多,而且,emoji表情库也不容易找全。

针对以上3种方法,我找到了农民伯伯的一篇博客。可惜我没有试成功,试了将近一下午,大坑,后来改用DroidSansFallback.ttf字体实现。没成功我估计他用的emoji编码模式是softbank(应该是软银自家自己先用的吧)的,最近的编码是unified(Unicode),http://www.cnblogs.com/over140/archive/2013/06/01/3112580.html。Anyhow,十分感谢他提供的这种思路。

其次,这位同学的是http://www.cnblogs.com/stay/archive/2012/10/30/2746489.html第三种办法,但是图片库过少,我没试,应该可以,仅作参考。新浪微博的我反编译看了下是这种方式写的。Whatsapp用的也是这种方式。

见图

这里有一个比较全的emoji库http://www.emoji-cheat-sheet.com/。用第三种方法做出来的同学可共享下代码。

我自己用网上一个论坛下了个字库,叫做DroidSansFallback.ttf。测试可以。

为了测试,输入的时候我用了Go输入法国际版+emoji插件来测试。搜狗输入法(后来经过测试,目前最新版的+4.0以上系统可以)的表情emoji表情编码不是Unicode的,我用了好久不行,这是个坑。

最终做出来的效果如下:


核心代码就5-6行。


[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. try{  
  2.         Typeface typefaceDroidSansFallback=Typeface.createFromAsset(getResources().getAssets(), "fonts/DroidSansFallback.ttf");  
  3.         mEditText.setTypeface(typefaceDroidSansFallback);  
  4.         mContentTextView.setTypeface(typefaceDroidSansFallback);  
  5.        }catch(Exception ex){  
  6.         Log.i("EmojiTest->MainActivity""Catch Exception!");  
  7.        }  

代码跟字库都放在这里

代码是免费下载的,希望能帮到大家。


其他参考文档:
  1.http://blog.csdn.net/qdkfriend/article/details/7576524
  2.http://www.easyapns.com/iphone-emoji-alerts
  3.http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt
  4.http://code.iamcal.com/php/emoji/
  5.http://punchdrunker.github.io/iOSEmoji/table_html/flower.html
  6.emoji图片及编码表http://download.csdn.net/detail/qdkfriend/4309051

  7.http://www.emoji-cheat-sheet.com/

  8.http://bbs.csdn.net/topics/390055415



UPDATE

update 1  2014-4-4

1.最近发现github有个开源的emoji字库,大家可以直接用https://github.com/rockerhieu/emojicon  支持输入输出,是使用上面说的方法3实现的,基本可以覆盖常用的操作。

2.有些同学说代码不行是因为你输入的不是emoji字符,使用android4.0以上系统加最新版的搜狗输入法(5.4以及以上)或者Go输入法国际版+emoji插件可以输入。

3.最终效果我做出来了,可以支持947个emoji字符,包括新版的以及旧版的编码,因为公司保密协议,不能共享,望理解。

4.上面的贴出来的代码是使用字体实现的,发现效果不好,但是是一种解决办法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值