最近公司项目集成环信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 getTextEmojiconMapping() {
return null;
}
});
上面EaseUI的相关代码我是模仿环信demo的DemoHelper放在自己项目的Helper中实现的。
到此自己的表情包就添加成功了,是不是很简单呢~