plugin 如何自定义点击事件

在集成 IMKit 的过程中,有时需要对输入区域扩展栏点击事件进行自定义
发布时间: 2019-06-14 19:02

回答:

1.继承已有的插件,并重写 onClick 方法
public class MyVideoPlugin extends VideoPlugin {
    @Override
    public void onClick(Fragment currentFragment, RongExtension extension) {
        Toast.makeText(currentFragment.getContext(),
                "我被点击了", Toast.LENGTH_LONG).show();
        super.onClick(currentFragment,extension);
    }
}
2.继承 DefaultExtensionModule ,实现 getPluginModules 方法,并将需要的插件添加到 list 中
public class MyExtensionModule extends DefaultExtensionModule {
    @Override
    public List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType) {
        List<IPluginModule> pluginModules = new ArrayList<>();
        pluginModules.add(new ImagePlugin());
        pluginModules.add(new MyVideoPlugin());
        return pluginModules;
    }
}
3.在初始化后调用 setMyExtensionModule 方法,将原先的 DefaultExtensionModule 移除加入自己定制的 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());
            }
        }
    }
这样就可以实现自定义点击事件