估计很多人都看到输入法键盘中使用的输入表情的Emoji。

键盘emoji.png

Emoji.png

Emoji使用基础

可以看到在不同的Native Android IOS系统中对应的emoji码显示的图片都不同。

国内这种环境,一般都想统一显示成ios对应样式的表情包的样式。

signal中已经提供了一个比较完善的方案显示自定义表情Emoji

https://github.com/signalapp/Signal-Android

1.添加对应的Emoji资源到asset(png)

asset资源.png

2.自定义EmojiTextView

image.png

3.在setText时替换emoji码显示的图片

image.png

有一个问题需要提醒,就是Emoji的表情符,只能用过双引号一个个隔断,而IOS中显示可以直接使用直接加载一堆Emoji表情(IOS傻瓜式开发做得好啊)

以此为基础。

我们想显示类似于微信那种效果的显示,输入框后加入表情按钮

image.png

Emoji输入方案

一般都要制作成滑动显示的。

这里就有两种方案

1.使用ViewPager,每页嵌套一个RecylerView,然后每一个页取出对应的图像资源

2.使用一个RecylerView滑动完成关联加上SnapHelper

第一种实现比较简便,但是这样比较耗资源且View的复用性不高。

第二种方案看起来是非常好的,但是实现起来肯定有有难度。

第一种方案就直接略过了,介绍第二种。

首先思考哦一个问题,使用recylerView滑动,使用pagerSnapHelper是无法卡位的。需要自顶一个

GridPagerSnapHelper来完成这种操作。

可以查看,直接附上开源代码。

https://github.com/hanhailong/GridPagerSnapHelper

这里需要提示一个虽然你recylerview使用了GridLayoutManager但是你使用的,但是普通的GridLayoutManger要做到横向滑动要使用竖向排列,那么排列效果就会有问题,GridPagerSnapHelper提供自定义的排列方式来满足横向排列。这里显示4行,7列。

GridPagerSnapHelper().apply {

setRow(4)

setColumn(7)

attachToRecyclerView(emoji_recycler)

}

然后编辑indicator的显示。监听滑动,计算出第一显示的item是在第几页。

```

emoji_recycler.addOnScrollListener(object : RecyclerView.OnScrollListener() {

override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {

// 停止滑动,计算当前页数

if (newState == RecyclerView.SCROLL_STATE_IDLE) {

val index = (emoji_recycler.layoutManager as GridLayoutManager).findFirstCompletelyVisibleItemPosition()

emoji_indicator.setCurrentIndicator(index / 28)

}

}

})

emoji_indicator.setIndicators((emoji_recycler.adapter as EmojiPanelAdapter).getPageSize())

class EmojiPanelAdapter(private val context: Context, private val onClick: (emoji: String) -> Unit) : RecyclerView.Adapter() {

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EmojiViewHolder {

android显示ios emoji表情符号,IM 使用的 Emoji 表情显示相关推荐

  1. php两字段一列竖排显示,iOS 10 YYLabel 竖排多列文字只能显示一列

    代码片段 YYLabel *textLabel = [[YYLabel alloc] init]; textLabel.numberOfLines = 0; textLabel.origin = CG ...

  2. 在Android系统中使用系统自带的emoji表情

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

  3. android 自带的表情,在Android系统中使用系统自带的emoji表情

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

  4. php 微信emoji输出,页面如何输出Emoji表情字符

    Emoji表情符号广泛运用于各种的社交软件上,是非常受欢迎的一种字符,如果用语言文字无法表达你内心的冲动,发一个Emoji表情就好了. 对于web而言如何在页面保存和展现这些字符呢?这可不是件容易的事 ...

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

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

  6. Emoji表情符号兼容方案(适用ios,android,wp等平台)

    http://blog.csdn.net/qdkfriend/article/details/7576524 Emoji表情符号兼容方案 一 什么是Emoji emoji就是表情符号:词义来自日语(え ...

  7. 适用ios,android,wp等平台手机emoji表情符号兼容方案

    一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里 ...

  8. ios emjoi java_前端App开发,实际工作中三端(android,ios,前端H5)emoji表情显示解决方案...

    想起最近开发APP的时候,产品提的一个需求,用户的帖子正文还有评论内容里,要能够显示emoji表情,因为我们这款app是混合开发的,APP里的发贴,发评论是原生做的(android和ios),但帖子详 ...

  9. android plist表情,在iOS中的UITextView中不显示笑脸(表情符号)?

    我已经存储在plist中通过iPhone所支持的所有单码(表情符).当我直接写为在iOS中的UITextView中不显示笑脸(表情符号)? - (IBAction)sendButtonSelected ...

最新文章

  1. JSPServlet路径问题
  2. Matlab系统信息、系统命令和跨平台
  3. 一个n位的数,去掉其中的k位,问怎样去使得留下来的(n-k)位数按原来的前后顺序组成的数最小...
  4. eclipse安装反编译插件(附jad下载)
  5. 怎么改vue项目的标题_如何动态修改Vue项目中的页面title
  6. keepalived(2)——配置文件
  7. 数据预处理代码分享——机器学习与数据挖掘 1
  8. python 正则替换_5分钟速览Python正则表达式常用函数!五分钟就掌握它!
  9. c语言用户登录成功才能,c语言用户登录.docx
  10. signature=127e8fab504590e43c26b869ab8a8d06,一种Ⅱ型集中器下电表全无数据故障的现场消缺方法...
  11. 宁德时代:被美国制裁、与特斯拉谈崩等系谣言 已向公安机关报案
  12. MyBatis关联映射
  13. 苹果 macOS 12.4 RC 发布,带来全新 Studio Display 壁纸
  14. 悉尼大学计算机硕士健康科技,悉尼大学健康科学学院
  15. 第一台计算机英语句子,20个虚拟语气句子带翻译
  16. PDFJS集成批注功能
  17. 基于vue的人机验证
  18. delphi 龙年窗体 恭喜发财
  19. 安装SQL Server和SQL Server Management Studio(SSMS)
  20. linux实用的磁盘大文件及大文件夹查找命令

热门文章

  1. 我们该如何看待加密VC青睐的那些NFT项目?
  2. 杨博:医疗大数据服务任重道远
  3. 对抗神经网络之对抗卷积神经网络[2]
  4. Linux环境下socket服务器搭建
  5. C语言———字符与字符串
  6. Subsonic配置与使用
  7. 【强化学习论文合集】三十四.2021机器人与自动化国际会议论文(ICRA2021)
  8. Java开发必学:java堆栈溢出的原因
  9. 【转载】门电路组成D触发器
  10. 未来计算机的硬件配置,2017顶级发烧配置 万元i7-7700K/GTX1080Ti顶级电脑配置方案推荐...