相信大家做项目的时候,特别是聊天相关的,一般都需要用到Emoji。

但是Emoji表情在安卓和IOS两个平台上,显示效果是不一样的,如下图:

言归正传,大家都知道,Emoji就是一组Unicode编码与一组表情描述之间的一一对应。而图片的实现是由各个系统或者软件针对统一的表情描述来各自实现的,他们都遵循统一的Unicode编码规范。也就是说Unicode编码其所对应的表情描述是统一的,是所有人都要共同遵守的一套标准或者规范,而具体的表情图片则可能因平台的不同而产生差异,比如Android和IOS。简单理解为一个Unicode对应一个表情图片,比如0x1F601对应的表情是 (咧着嘴笑),当然他的Unicode码不变,该系统上这个表情图片是什么就对应显示该表情图片。

Emoji表情对应Unicode码大全

有需要的可以去上面的链接查询对应的编码!!!

本章就以Apple风格的Emoji来演示,效果图如下:

如何使用:

dependencies {implementation 'com.github.OneGreenHand:Emoji:v1.2.4'
}

1、初始化

在Application中进行初始化

EmojiManager.init(this)

2、在布局中应用

<com.green.hand.library.widget.EmojiBoardandroid:layout_width="match_parent"android:layout_width="match_parent"android:layout_height="wrap_content"app:deleteIcon="@mipmap/ic_launcher"//可选app:emojiIndicator="@mipmap/ic_launcher"//可选app:emojiIndicatorHover="@mipmap/ic_launcher"//可选
/> 

*可选,如果不用此控件,需自行监听实现,具体参考EmoniEdittext。

<com.green.hand.library.widget.EmojiEdittextandroid:layout_width="wrap_content"android:layout_height="wrap_content"
/>

//兼容emoji显示的textview

 <com.green.hand.library.widget.EmojiTextviewandroid:layout_width="match_parent"android:layout_height="wrap_content"/>

3、在页面中使用

实现表情框Item单击事件(emojiBoard为EmojiBoard控件,textEditor为Edittext控件)

emojiBoard.setItemClickListener(new EmojiBoard.OnEmojiItemClickListener() {//表情框点击事件@Overridepublic void onClick(String code) {if (code.equals("/DEL")) {//点击了删除图标textEditor.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));} else {//插入表情textEditor.getText().insert(textEditor.getSelectionStart(), code);}}});

4、部分方法

EmojiBoard ---> showBoard() //显示隐藏表情框
EmoniEdittext ---> isEnable(view) //用于未输入文字时,其他按钮不可点击
EmojiTextview ---> setUseSystemDefault(boolean) //是否使用系统默认表情

属性说明

deleteIcon:删除icon
emojiIndicator:底部未选中icon
emojiIndicatorHover:底部选中icon

补充说明

如果仍然出现显示为☐或者乱码情况,可尝试使用官方的 EmojiCompat 支持库或使用emojicon三方库

版本历史

  • v1.2.4

升级到android x

  • v1.2.3

GridView变更为Recycleview、资源优化、升级版本

  • v1.2.2

新增、替换表情、去除ButterKnife依赖

  • v1.2.1

新增、去除重复表情

修复部分手机无法显示问题

加入兼容Emoji显示的控件

Github直达链接

欢迎Start或提issues!

Android IOS风格Emoji表情,简单实用相关推荐

  1. 【Android】显示Emoji表情字符

    一.下载AndroidEmoji.ttf字体 地址1:Github Android Platform 地址2:AndroidEmoji.ttf.zip 二.使用 2.1 将字体拷贝到assets/fo ...

  2. android显示ios emoji表情符号,教程:在 Android 上也能用 iOS 新 Emoji 表情

    那是一个阳光明媚的周末,我惬意的躺在床上用着我的 Android 机刷微博,看着网上那些段子手,心情无比的舒畅.直到我看见这么一条: 瞬间百万头羊驼从我心头奔过,他到底发了些什么!?为什么我看不见!! ...

  3. iOS禁止输入emoji表情

    因为emoji编码在android或者pc设备没有很好的支持,所以有时候为了禁止emoji表情的输入,因为关闭不了系统emoji的键盘,那只能根据编码把emoji表情过滤掉,写了一个NSString的 ...

  4. android ios 录音功能,盘点:简单好用的录音APP有哪些?

    原标题:盘点:简单好用的录音APP有哪些? 本文为「智活范」原创作品,欢迎关注我们! 前段时间去跟一个采访,因为过程中要录音,遂找人介绍了一款录音APP来用.当时用下来觉得录音体验没问题,但就是界面太 ...

  5. 修改Android手机的emoji表情(NotoColorEmoji.ttf)

    过程综述 1.Android手机需要root,因为需要访问/system/fonts/NotoColorEmoji.ttf修改 2.需要NotoColorEmoji.ttf对应的库,比如你想要修改成i ...

  6. iOS的emoji表情在数据库不支持UTF-8格式的处理

    前言 最近遇到苹果手机自带的emoji表情的处理问题,由于我们的数据库编码是GBK编码,而苹果的键盘自带的emoji表情,苹果系统的编码格式是UTF8编码,所以在把emoji表情存到GBK编码的数据库 ...

  7. oracle存储emoji表情,Android自带emoji表情的使用方法详解

    什么是emoji表情 emoji表情是一种表情符号,在代码中它现在其实是一组遵循Unicode的编码,即每一个表情符号都对应了一个Unicode编码.更进一步说,emoji表情实际上是一组Unicod ...

  8. iOS中Emoji表情的判断

    问题 服务器端不支持Emoji表情,因此客户端在上传用户输入时,不能包含Emoji表情. 解决方案 在客户端发送请求前,判断用户输入中是否含有表情,如果含有表情,则提示用户重新输入.这个过程关键是如何 ...

  9. iOS 过滤emoji表情

    iOS输入框过滤emoji表情 // // ViewController.m // test // // Created by 郭宇 on 13-11-15. // Copyright (c) 201 ...

最新文章

  1. 院士:科研工作者也得养家,非升即走压力下,不得不做短平快的研究
  2. java堆与非堆的一些研究_堆和堆傻傻分不清?一文告诉你 Java 集合中「堆」的最佳打开方式...
  3. 阿里巴巴DevOps实践指南 | 为什么DevOps的必然趋势是BizDevOps?
  4. CMS(Concurrent Mark-Sweep)垃圾回收器
  5. python opencv图像处理程序_Python-OpenCV学习(四):基本图像处理
  6. [python] 列表解析式的高效与简洁
  7. android8.1自定义通知栏,Android 8.1隐藏状态栏图标的实例代码
  8. macbook怎么改编码_如何设置新的MacBook进行编码
  9. 变分法理解1——泛函简介
  10. 怎样用VB获得Windows各类系统目录
  11. Python:如何安装与使用 pip
  12. 《HTML5 开发实例大全》——1.32 在表单中使用 object 元素插入一个Flash
  13. 强的离谱!串烧70+个Transformer模型,涵盖CV、NLP、金融、隐私计算...
  14. linux debain下vim高亮显示
  15. StretchBlt()函数
  16. 2022道路运输企业安全生产管理人员考试模拟100题及在线模拟考试
  17. 中继器制作联动下拉列表
  18. 基于色彩直方图匹配的颜色传递算法
  19. qlv转MP4(笨方法,大用途)
  20. 如果你打算看完Linux内核源码,可能穷尽一生都做不出一个系统

热门文章

  1. PHP学习笔记(一)--基础知识
  2. 邦纳超声波传感器T30UXDA
  3. 笔记本键盘 Fn 键 的锁定与解锁
  4. 揭秘互联网金融的大数据风控
  5. Unity 中 print 和 Debug.Log 的区别
  6. 两用物项许可证办理流程_办理两用物项和技术进口许可证流程
  7. vuejs开发H5页面总结
  8. 【PMP】关键路径法与关键链法
  9. fastspeech2复现github项目--数据准备
  10. 电容笔和触控笔有什么区别?第三方电容笔了解下