0°

快速打造 Android 自定义表情库

内容预览:
  • “ 简介 本文灵感来源是经典的https://github.com/rockerhieu/emojicon,...~
  • 把每一页数据都放入一个 GridView,GridView 的每个 Item 都是一个 Text...~
  • 始发于微信公众号: 程序员小乐 分享编程技能、互联网技术、生活感悟、...~

始发于微信公众号: 程序员小乐

分享编程技能、互联网技术、生活感悟、打造干货分享平台,将总结的技术、心得、经验分享给大家,这里不只限于技术!学无止境,不求尽如人意,但求问心无愧。让学习成为一种美、一种习惯。值得爱学习的你去关注,感觉有帮助转发分享让更多的人去关注!点击上方 蓝字 关注!


作者:剑西

链接:http://blog.csdn.net/mabeijianxi/article/details/74779611
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

快速打造 Android 自定义表情库—– 由   分享


每日英语

Let go of the things that don’t matter anymore, you don’t need the extra weight holding you down. 

放开那些不再重要的东西,你不需要那些额外的重量来拖累你了。


简介



本文灵感来源是经典的https://github.com/rockerhieu/emojicon,部分代码直接不要脸的 copy 了,在其基础上更美观好用,且自定义空间更大。


最终效果图




快速打造 Android 自定义表情库


源码下载与使用方法:

https://github.com/mabeijianxi/android-expression


实现思想



  1. 首先叫 UI 给我做好的表情图片,然后保存在本地的 drawable 下。


    快速打造 Android 自定义表情库


  2. 然后不管你写个脚本也好一个一个输入也好,把图片名称全部缓存到数组,一个数组代表一页表情,需要多少页,一页表情有多少个就看 UI 喜好了,当然你会发现我多给了一个空字符串占位,因为我想在那里写死一个删除按钮~~。


    快速打造 Android 自定义表情库


  3. 把其名字与其 id 存入一个 Map ,这样可以在后面用的时候增加一些效率。



    快速打造 Android 自定义表情库


  4. 把每一页数据都放入一个 GridView,GridView 的每个 Item 都是一个 TextView,然后把这些
    GridView 加入到 ViewPager,如果这时候我们不做处理,效果应该是这样的:


    快速打造 Android 自定义表情库


  5. 我们复写一个 TextView ,利用 Spannable 动态把对应的文字替换为图片即可,结果就然后就成了这样(细心的同学会发现4和5的图小点个数不一样,图4是最新项目的,我去掉了老版表情,图5是以前的):


    快速打造 Android 自定义表情库


核心代码详解



封装的部分不就唠叨了,直接点开源码一眼就能看懂的,现在直接看看一些核心方法。
  • 文字替换:
    检查一段文字中是否有匹配我们定义的表情字样,如果匹配上就替换为对应的图片。

快速打造 Android 自定义表情库

快速打造 Android 自定义表情库

  • 首先我通过 text.getSpans 获取了本段文字里面所有的 ExpressionSpan ,也就是表情信息,一个 ExpressionSpan 就是一个表情,我们把每个表情的起始位置都存入到一个 HashMap ,这样做可以很大程度上曾加效率!可以看到我们后面用正则去图片标识,也就是[jx] 开头, [/jx] 结尾的文字,为什么前面我那样做可以增加效率呢?可以看到如果找到一个符合的字样,首先我获取了它的开始角标,然后放入刚刚那个 HashMap 里面寻找其对应的 value,如果这个 value 干好等于我们刚寻找的字样的结束角标那就说明这个表情其实根本就没变化,我们无需再次对它替换,这种方式在输入的时候非常实用,我也是在输入表情数量特别多产生卡顿后才想到的解决办法,这样做当你输入一个表情时只会对你当前这个表情做处理,其他字样虽然符合但是会被我们全 continue。能继续往下走的,都是我们需要做处理的,我们只需要把这个字符串去我们缓存 id 的 Map 里面找就可以获得对应的图片 id 了,也就是执行 ExpressionCache.getAllExpressionTable().get(beferGroup)。然后就可以构建一个类似 ImageSpan 的 Span了。

  • 最近使用列表维护

快速打造 Android 自定义表情库

快速打造 Android 自定义表情库


首先这个存储最近使用表情的容器用的是数组,所以没法确定其正常的有效长度,我第一步是获取有效长度,然后就是简单移位排序而已。只要每点击一次我们就检查下需不需从新排序。


总结



我擦已经差不多了不写了,就在这一刻,大学女神找我聊天。。。让我教她追另外一个男的。。,可以了。。最后贴下源码地址https://github.com/mabeijianxi/android-expression


如果您觉得不错,请别忘了分享到您的朋友圈让更多的人看到!! 您的举手之劳,就是对我最好的支持,非常感谢!


快速打造 Android 自定义表情库

每日掏心话

人只能活一次,千万别活得太累!如果我们能持有一颗平常心,坐看云起云落,花开花谢,一任沧桑,就能获得一份云水悠悠的好心情。


快速打造 Android 自定义表情库


推荐阅读





小密圈
这里聚集了业界内的大牛,值得各位大牛的加入!


快速打造 Android 自定义表情库

看完本文有收获?请转发分享给更多人
关注「杨守乐」,提升编程技能

【QQ技术群】279126311 []
【QQ技术群】484572225 [未]

以上就是:快速打造 Android 自定义表情库 的全部内容。

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论