android开发表情输入

原创 2015年11月19日 11:51:19

偌,首先声明,我并不是用图片在edittext之类的控件中显示,来充当表情。而是用手机系统自带的字符集,通过unicode编解码来做的。所以不需要在工程里放入几百张表情的小图片。因为Emoji表情本来就是字符集里的一个字符,和普通的中文英文是一个意思。只是在unicode扩展字符集里而已。

1,down一份Emoji表情的Unicode编码的json或者xml数据(见附件下载)。当然了,这个通过txt肯定是乱码的,可以在浏览器中看看,它可以解析部分表情,看个大概是可以的吧


2,找几个不同的手机,抓相同的Emoji表情,发现在手机上看到的图片并不一样。比如同样是相同的unicode码:"\ud83d\ude01",编码之后显示的表情却不同(下图第一个)

这个是在魅族3上面的效果,第一个咧牙表情


这个是在华为6p上的效果,第一个咧牙表情

大家都退下,我要上代码了。utf8和unicode之间的编解码

private static final Pattern reUnicode = Pattern.compile("\\\\u([0-9a-zA-Z]{4})");

    /*
     * Unicode编码
     */
    public static String encode(String s) {
        StringBuilder sb = new StringBuilder(s.length() * 3);
        for (char c : s.toCharArray()) {
            if (c < 256) {
                sb.append(c);
            } else {
                sb.append("\\u");
                sb.append(Character.forDigit((c >>> 12) & 0xf, 16));
                sb.append(Character.forDigit((c >>> 8) & 0xf, 16));
                sb.append(Character.forDigit((c >>> 4) & 0xf, 16));
                sb.append(Character.forDigit((c) & 0xf, 16));
            }
        }
        return sb.toString();
    }

    /*
     * Unicode解码
     */
    public static String decode(String s) {
        Matcher m = reUnicode.matcher(s);
        StringBuffer sb = new StringBuffer(s.length());
        while (m.find()) {
            m.appendReplacement(sb,
                    Character.toString((char) Integer.parseInt(m.group(1), 16)));
        }
        m.appendTail(sb);
        return sb.toString();
    }

3,微信是自己干了一套表情,但是每个表情是一个数据Model。model里包含字段:图片、对应的unicode编码。

4,至于表情左右viewpage分页的样式,我也帮大家找了一份,随意拿走,反正不是我写的。不过demo里是图片,我刚开始就说了,我现在讲的不是用图片去实现,而是直接放几个button,button上面是表情json里的unicode字符串,显示的时候手机系统会根据字符集自动匹配出表情,和输入法里的一样。样式的代码见附件


json 传送门(json文件)

表情viewpage传送门(代码)

Android 支持表情功能

概述1.原理和实现思路2.表情图片显示3.表情面板4.表情的输入框插入和删除5.表情添加脚本Android中表情功能,一般都不是用ImageView去设置图片实现的, 表情一般会嵌套在文本之中,那么...
  • Army_Jun
  • Army_Jun
  • 2016年03月31日 10:51
  • 1084

Android自定义表情功能的实现

Android开发中经常用到评论.回复.和发送聊天信息的功能开发,这其中就有表情的插入发送功能,经过长时间的开发总结,先封装出插入表情的功能实现代码开源给大家,共大家参考,共同学习进步: 1.拷贝表...
  • JackiAndroid
  • JackiAndroid
  • 2015年03月23日 15:31
  • 3035

Android开发笔记之发送小表情的实现

本博客主要实现的是像QQ表情的发送以及文字与表情的一起发送我们首先要明白QQ表情的发送其实是一种特别的文本,也是文本的形式,所以我们需要将QQ表情转化为特殊的文本形式 第一步我们先做一个资源工具类,...
  • u012416955
  • u012416955
  • 2016年07月20日 15:59
  • 1032

android键盘表情流畅切换实现

android 键盘表情流畅切换大家都用微信,在聊天页面,软键盘与表情栏,工具栏之间的切换非常流畅,没有引起输入bar的上下抖动,体验非常好。这里讲一讲它的实现原理。...
  • github_25646711
  • github_25646711
  • 2015年10月22日 19:54
  • 1614

android实现表情输入(极其简洁易懂)

效果: demo下载: android 发送表情 emoji - 下载频道 - CSDN.NET http://download.csdn.net/detail/baidu_31093133/9...
  • baidu_31093133
  • baidu_31093133
  • 2017年03月15日 19:18
  • 904

android高仿微信表情输入与键盘输入(详细实现分析)

转载请注明出处: http://blog.csdn.net/javazejian/article/details/52126391  最近公司在项目上要使用到表情与键盘的切换输入,自己实现了一个,还...
  • javazejian
  • javazejian
  • 2016年08月05日 10:09
  • 22727

Android 输入法表情上传服务器

对于表情上传,无非是转码和解码,对于Android 键盘自带的表情也是有对应的编码,我们点击表情EditText会自动的识别表情,系统根据编码进行解码,显示出来  好了不废话了,上货 我实现的就是...
  • wan903531306
  • wan903531306
  • 2016年09月21日 18:17
  • 1398

Android 系统自带输入法的表情显示 -项目总结

今天遇到了一个让人头疼的w'n't
  • u010036856
  • u010036856
  • 2014年07月22日 17:16
  • 2981

android 输入框EditText禁止输入Emoji表情符

  • 2015年04月30日 09:42
  • 630KB
  • 下载

Android 系统自带输入法的表情显示 -项目总结

转自:http://blog.csdn.net/u010036856/article/details/38045887    今天遇到了一个让人头疼的问题,测试提的 ,当我使用搜狗输入法的时候,搜...
  • xinlvmylife
  • xinlvmylife
  • 2015年08月26日 16:34
  • 2051
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android开发表情输入
举报原因:
原因补充:

(最多只允许输入30个字)