环信3.0添加聊天表情包

前言

最近公司项目集成环信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中实现的。

到此自己的表情包就添加成功了,是不是很简单呢~

猜你喜欢

转载自blog.csdn.net/ever69/article/details/78751703