前言
最近公司项目集成环信sdk,记录一下集成过程中的各种问题。
如果说现在人与人之间最有效的沟通方式是什么,当然是表情包啊,一套不行就两套,两套不行就十套。本片博客就记录一下环信如何添加表情包。
正文
本次的内容并不算复杂,我是参照了环信Demo中添加兔斯基表情包的代码实现添加自己的表情包的。
1.首先在环信demo中找到EmojiconExampleGroupData这个类,copy一份修改为如下内容。
public class EmojiconMoGuTouGroupData { //表情包缩略图,Png图片 private static int[] icons = new int[]{ R.mipmap.mogutou00_cover, R.mipmap.mogutou01_cover, R.mipmap.mogutou02_cover, R.mipmap.mogutou03_cover, R.mipmap.mogutou04_cover, R.mipmap.mogutou05_cover, R.mipmap.mogutou06_cover, R.mipmap.mogutou07_cover, R.mipmap.mogutou08_cover, R.mipmap.mogutou09_cover, R.mipmap.mogutou10_cover, R.mipmap.mogutou11_cover, R.mipmap.mogutou12_cover, R.mipmap.mogutou13_cover, R.mipmap.mogutou14_cover, R.mipmap.mogutou15_cover, R.mipmap.mogutou16_cover, R.mipmap.mogutou17_cover, R.mipmap.mogutou18_cover, R.mipmap.mogutou19_cover, R.mipmap.mogutou20_cover, R.mipmap.mogutou21_cover, R.mipmap.mogutou22_cover, R.mipmap.mogutou23_cover, R.mipmap.mogutou24_cover, R.mipmap.mogutou25_cover, R.mipmap.mogutou26_cover, R.mipmap.mogutou27_cover, R.mipmap.mogutou28_cover, R.mipmap.mogutou29_cover, R.mipmap.mogutou30_cover, R.mipmap.mogutou31_cover, }; //表情包大图,Gif图 private static int[] bigIcons = new int[]{ R.mipmap.mogutou00, R.mipmap.mogutou01, R.mipmap.mogutou02, R.mipmap.mogutou03, R.mipmap.mogutou04, R.mipmap.mogutou05, R.mipmap.mogutou06, R.mipmap.mogutou07, R.mipmap.mogutou08, R.mipmap.mogutou09, R.mipmap.mogutou10, R.mipmap.mogutou11, R.mipmap.mogutou12, R.mipmap.mogutou13, R.mipmap.mogutou14, R.mipmap.mogutou15, R.mipmap.mogutou16, R.mipmap.mogutou17, R.mipmap.mogutou18, R.mipmap.mogutou19, R.mipmap.mogutou20, R.mipmap.mogutou21, R.mipmap.mogutou22, R.mipmap.mogutou23, R.mipmap.mogutou24, R.mipmap.mogutou25, R.mipmap.mogutou26, R.mipmap.mogutou27, R.mipmap.mogutou28, R.mipmap.mogutou29, R.mipmap.mogutou30, R.mipmap.mogutou31, }; //表情包中表情的描述 private static String[] icons_name = new String[]{ "大哭", "害怕", "期待", "涂红唇", "无聊", "绝望", "么么哒", "一起摇摆", "生气", "开心", "惊讶", "冷淡", "爱心", "揉脸", "不要", "爱你", "yes", "疑问", "抛媚眼", "加油", "点赞", "哈哈大笑", "搞笑", "嘚瑟", "兴奋", "尬舞", "庆祝", "气的跺脚", "我不要", "自拍", "蹦床", "嗨", }; private static final EaseEmojiconGroupEntity DATA = createData(); //生成表情包实体对象 private static EaseEmojiconGroupEntity createData() { EaseEmojiconGroupEntity emojiconGroupEntity = new EaseEmojiconGroupEntity(); EaseEmojicon[] datas = new EaseEmojicon[icons.length]; for (int i = 0; i < icons.length; i++) { datas[i] = new EaseEmojicon(icons[i], null, Type.BIG_EXPRESSION); datas[i].setBigIcon(bigIcons[i]); //you can replace this to any you want datas[i].setName(icons_name[i]); datas[i].setIdentityCode("mogutou" + (1000 + i + 1)); } emojiconGroupEntity.setEmojiconList(Arrays.asList(datas)); emojiconGroupEntity.setIcon(R.mipmap.mogutou13_cover); emojiconGroupEntity.setType(Type.BIG_EXPRESSION); return emojiconGroupEntity; } //获得表情包实体对象 public static EaseEmojiconGroupEntity getData() { return DATA; } }说明一下Type.BIG_EXPRESSION,表示是大表情类型,还有一个Type.NORMAL类型,这个是不能发送大表情的,发出来的是创建对象时设定的文字,表情包这里暂不推荐使用这个类型。
datas[i] = new EaseEmojicon(icons[i], 文字, Type.NORMAL);
2、去ChatFragment中添加表情实体对象
在setUpView()中添加代码
((EaseEmojiconMenu) inputMenu.getEmojiconMenu()).addEmojiconGroup(EmojiconMoGuTouGroupData.getData());
3.设置EaseUI的setEmojiconInfoProvider(new EaseUI.EaseEmojiconInfoProvider()
private EaseUI easeUI= EaseUI.getInstance();
//set emoji icon provider easeUI.setEmojiconInfoProvider(new EaseUI.EaseEmojiconInfoProvider() { @Override public EaseEmojicon getEmojiconInfo(String emojiconIdentityCode) { //兔斯基表情 EaseEmojiconGroupEntity data = EmojiconExampleGroupData.getData(); for (EaseEmojicon emojicon : data.getEmojiconList()) { if (emojicon.getIdentityCode().equals(emojiconIdentityCode)) { return emojicon; } } //蘑菇头表情 EaseEmojiconGroupEntity data_panda = EmojiconMoGuTouGroupData.getData(); for (EaseEmojicon easeEmojicon : data_panda.getEmojiconList()) { if (easeEmojicon.getIdentityCode().equals(emojiconIdentityCode)){ return easeEmojicon; } } return null; } @Override public Map<String, Object> getTextEmojiconMapping() { return null; } });上面EaseUI的相关代码我是模仿环信demo的DemoHelper放在自己项目的Helper中实现的。