Android 端如何添加自定义表情

##实现步骤
1.新建 RongEmoticonTab 类继承 IEmoticonTab 。

public class RongEmoticonTab implements IEmoticonTab {public RongEmoticonTab() {}@Overridepublic Drawable obtainTabDrawable(final Context context) {return context.getResources().getDrawable(R.drawable.u1f603);}@Overridepublic View obtainTabPager(Context context) {return view;}@Overridepublic void onTableSelected(int i) {}
}

2.在 obtainTabPager 中添加您想要展示在表情面板上的 view 。

    @Overridepublic View obtainTabPager(Context context) {View view = LayoutInflater.from(context).inflate(R.layout.view_emoji, null);RecyclerView rv = view.findViewById(R.id.recycler_view);//LinearLayoutManager是用来做列表布局,也就是单列的列表GridLayoutManager mLayoutManager = new GridLayoutManager(context, 5, OrientationHelper.VERTICAL, false);rv.setLayoutManager(mLayoutManager);//谷歌提供了一个默认的item删除添加的动画rv.setItemAnimator(new DefaultItemAnimator());rv.setHasFixedSize(true);//模拟列表数据ArrayList newsList = new ArrayList<>();TypedArray array = context.getResources().obtainTypedArray(context.getResources().getIdentifier("rc_emoji_res", "array", context.getPackageName()));int i = -1;while (++i < array.length()) {newsList.add(array.getResourceId(i, -1));}rv.setAdapter(new NewsAdapter(newsList));return view;}

3.Adapter 和布局文件可以参考GitHub
4.自定义一个 ExtensionModule 继承自 DefaultExtensionModule,复写其中的 getEmoticonTabs() 方法,返回需要展示的 EmoticonTab 列表。

public class MyExtensionModule extends DefaultExtensionModule {private RongEmoticonTab rongEmoticon;@Overridepublic List<IEmoticonTab> getEmoticonTabs() {List<IEmoticonTab> emoticonTabs =  super.getEmoticonTabs();RongEmoticonTab emojiTab=new RongEmoticonTab();emoticonTabs.add(myEmoticon);return emoticonTabs;}
}

5.在初始化之后,取消 SDK 默认的 ExtensionModule,注册自定义的 ExtensionModule, 如下:

public void setMyExtensionModule() {List<IExtensionModule> moduleList = RongExtensionManager.getInstance().getExtensionModules();IExtensionModule defaultModule = null;if (moduleList != null) {for (IExtensionModule module : moduleList) {if (module instanceof DefaultExtensionModule) {defaultModule = module;break;}}if (defaultModule != null) {RongExtensionManager.getInstance().unregisterExtensionModule(defaultModule);RongExtensionManager.getInstance().registerExtensionModule(new MyExtensionModule());}}
}

6.如果需要网络下载表情需要下载并持久化表情数据,需要在添加 EmoticonTab 前下载好表情数据。

Android 端如何添加自定义表情相关推荐

  1. android 自定义表情包,Android 端如何添加自定义表情

    Android 端如何添加自定义表情 实现步骤 1.新建 RongEmoticonTab 类继承 IEmoticonTab .public class RongEmoticonTab implemen ...

  2. 实时语音驱动实现Android端Avatar虚拟人表情表达

    语音驱动虚拟人功能简介 ZEGO Avatar SDK 提供了语音驱动功能,通过声音的声波信息,实时驱动当前虚拟人物的嘴形变化,使得虚拟形象能够和真人一样进行自然的情绪表达. 可广泛应用于社交互动.语 ...

  3. 如何给你的 Android App 添加自定义表情

    上一篇文章 Android Span 原理解析 介绍了 Span 的原理.这一篇文章将介绍 Span 的应用,使用 Span 来给 App 添加自定义表情. 原理 添加自定义表情的原理其实很简单,就是 ...

  4. 【环信IM集成指南】Android 端常见问题整理

    1.如何修改系统通知中的头像和用户名 系统通知是在主module中自己写的,demo中是AgreeMsgDelegate,InviteMsgDelegate,OtherMsgDelegate中去修改头 ...

  5. Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展

    本文由"猫爸iYao"原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样: ▲ 微信群聊界面里的@人功能  ▲ Q ...

  6. 微信小游戏直播在Android端的跨进程渲染推流实践

    本文由微信开发团队工程师"virwu"分享. 1.引言 近期,微信小游戏支持了视频号一键开播,将微信升级到最新版本,打开腾讯系小游戏(如跳一跳.欢乐斗地主等),在右上角菜单就可以看 ...

  7. 分享一个完整的社区项目(Android端加后台)

    '乡吧'社区APP安卓端代码 简介 "乡吧"APP是我之前的一个练手项目,此App主要是提供一个同乡的社区交流平台, 用户可以选择自己家乡的'乡吧'进行发帖.评论.创建群或者直接与 ...

  8. android 程序 读logo,Android端APP更换logo和名称后都需要些测试哪些内容呢?

    原标题:Android端APP更换logo和名称后都需要些测试哪些内容呢? 之前有人在搜狗测试粉丝群中问过APP更换logo和名称后需要怎么测试呢?小编正好经历过这样的需求,下面来系统整理一下APP更 ...

  9. Android端WEEX + HTTPDNS 最佳实践

    由于WebView并未暴露处设置DNS的接口,因而在WebView场景下使用HttpDns存在很多无法限制,但如果接入WEEX,则可以较好地植入HTTPDNS,本文主要介绍在WEEX场景下接入HTTP ...

最新文章

  1. EmEditor Professional(文本编辑) 下载地址
  2. 9月,最值得看的30篇肠道健康文献!
  3. 绿色数据中心保护布线的秘决
  4. python中的set类型
  5. json.stringify()与json.parse()的区别,json.stringify()的妙用
  6. 黑客攻防技术宝典Web实战篇第2版—第3章 Web应用程序技术
  7. opencv-api cvtColor
  8. jsonpath学习链接
  9. 南大衣哥、北袁长标,恭喜谷传民新歌准备报送央视春晚
  10. 基金投资理财专栏介绍
  11. 基于MATLAB Arnold 的图像置乱加密及解密
  12. Flash Player 更新后视频卡问题
  13. Ubuntu16.04安装vscode,并修改为简体中文版,设置显示空格和tab,汉字或者汉字的标点带黄色框
  14. 安装软件提示无效驱动器D
  15. hdu 4544 湫湫系列故事——消灭兔子
  16. 实时监控安卓屏幕点击位置
  17. 太阳能充电器带数显功能有什么用处?
  18. 前端修仙路之筑基(CSS篇)
  19. ORACLE之ora-01722和ORA-01403的错误测试
  20. 打印零与奇偶数 思路分析

热门文章

  1. 基金到底是什么???
  2. excel 溢出 修复_修复Excel条件格式重复规则
  3. python字符串替换replace,Python字符串替换
  4. VSCode如何设置终端工作目录
  5. 前端小练习——走马灯效果+网页页面换肤效果
  6. 【个人学习用】利用随机森林学习调参总结
  7. 【在线研讨会】智慧汽车时代来临 -车规功能安全软硬件一次到位
  8. 修改一个文件夹的多个图片名称
  9. 如何将sql文件导入数据库中
  10. LOL改成英文版(整活篇)