Android 端如何添加自定义表情
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 端如何添加自定义表情相关推荐
- android 自定义表情包,Android 端如何添加自定义表情
Android 端如何添加自定义表情 实现步骤 1.新建 RongEmoticonTab 类继承 IEmoticonTab .public class RongEmoticonTab implemen ...
- 实时语音驱动实现Android端Avatar虚拟人表情表达
语音驱动虚拟人功能简介 ZEGO Avatar SDK 提供了语音驱动功能,通过声音的声波信息,实时驱动当前虚拟人物的嘴形变化,使得虚拟形象能够和真人一样进行自然的情绪表达. 可广泛应用于社交互动.语 ...
- 如何给你的 Android App 添加自定义表情
上一篇文章 Android Span 原理解析 介绍了 Span 的原理.这一篇文章将介绍 Span 的应用,使用 Span 来给 App 添加自定义表情. 原理 添加自定义表情的原理其实很简单,就是 ...
- 【环信IM集成指南】Android 端常见问题整理
1.如何修改系统通知中的头像和用户名 系统通知是在主module中自己写的,demo中是AgreeMsgDelegate,InviteMsgDelegate,OtherMsgDelegate中去修改头 ...
- Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展
本文由"猫爸iYao"原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样: ▲ 微信群聊界面里的@人功能 ▲ Q ...
- 微信小游戏直播在Android端的跨进程渲染推流实践
本文由微信开发团队工程师"virwu"分享. 1.引言 近期,微信小游戏支持了视频号一键开播,将微信升级到最新版本,打开腾讯系小游戏(如跳一跳.欢乐斗地主等),在右上角菜单就可以看 ...
- 分享一个完整的社区项目(Android端加后台)
'乡吧'社区APP安卓端代码 简介 "乡吧"APP是我之前的一个练手项目,此App主要是提供一个同乡的社区交流平台, 用户可以选择自己家乡的'乡吧'进行发帖.评论.创建群或者直接与 ...
- android 程序 读logo,Android端APP更换logo和名称后都需要些测试哪些内容呢?
原标题:Android端APP更换logo和名称后都需要些测试哪些内容呢? 之前有人在搜狗测试粉丝群中问过APP更换logo和名称后需要怎么测试呢?小编正好经历过这样的需求,下面来系统整理一下APP更 ...
- Android端WEEX + HTTPDNS 最佳实践
由于WebView并未暴露处设置DNS的接口,因而在WebView场景下使用HttpDns存在很多无法限制,但如果接入WEEX,则可以较好地植入HTTPDNS,本文主要介绍在WEEX场景下接入HTTP ...
最新文章
- EmEditor Professional(文本编辑) 下载地址
- 9月,最值得看的30篇肠道健康文献!
- 绿色数据中心保护布线的秘决
- python中的set类型
- json.stringify()与json.parse()的区别,json.stringify()的妙用
- 黑客攻防技术宝典Web实战篇第2版—第3章 Web应用程序技术
- opencv-api cvtColor
- jsonpath学习链接
- 南大衣哥、北袁长标,恭喜谷传民新歌准备报送央视春晚
- 基金投资理财专栏介绍
- 基于MATLAB Arnold 的图像置乱加密及解密
- Flash Player 更新后视频卡问题
- Ubuntu16.04安装vscode,并修改为简体中文版,设置显示空格和tab,汉字或者汉字的标点带黄色框
- 安装软件提示无效驱动器D
- hdu 4544 湫湫系列故事——消灭兔子
- 实时监控安卓屏幕点击位置
- 太阳能充电器带数显功能有什么用处?
- 前端修仙路之筑基(CSS篇)
- ORACLE之ora-01722和ORA-01403的错误测试
- 打印零与奇偶数 思路分析