融云 Android SDK 2.1+ 稳定版 UI 和 模块功能自定义
注:此博文只适用于 RongCloud Android SDK IMkit 2.1.0 以后的版本
如何在融云会话界面输入区扩展功能(点击“+”弹出的 bar)中,对默认的图片、相机、位置、语音功能进行添加或删除:
如上图所示: 如只需要在单聊的 bar 中使用位置和相机功能,需要在代码中做如下配置:(另外两个配置类 ImageInputProvider 相册 VoIPInputProvider 语音)
- //我需要让他显示的内容的数组 此处示例 语音 位置
- ExtendProvider [] ep = {new LocationInputProvider(RongContext.getInstance()),new CameraInputProvider(RongContext.getInstance())};
- //我需要让他在什么会话类型中的 bar 展示
- RongIM.resetInputExtensionProvider(ConversationType.PRIVATE, ep);
配置完成运行以后,你会发现你单聊的 “+” 中 bar 里面就会出现如上图的效果。
注意:
1、如果您自己的工程当中点击出来就没有位置的模块 是因为您没有实现 RongIM.LocationProvider 相关代码。
2、如果您不需要使用到语音相关的功能 你可以把 bar 中的语音隐藏后,再把工程的 libs 的 arm arm-v7 x86 中的语音相关的 voip.so umcs.so 删除,这样可以减小你 apk。
如何在 “+” 中的 bar 增加自定义模块:
首先您需要去 自定义一个类 继承 ExtendProvider 然后实现他的 构造方法 和 没有实现的 方法 详情见下面代码:
- public class TestProvider extends ExtendProvider{
- private Context mContext;
- public TestProvider(RongContext context) {
- super(context);
- mContext = context;
- }
- //设置 展示的图标
- @Override
- public Drawable obtainPluginDrawable(Context arg0) {
- // TODO Auto-generated method stub
- return arg0.getResources().getDrawable(R.drawable.btn_default);
- }
- //设置 图标下的title
- @Override
- public CharSequence obtainPluginTitle(Context arg0) {
- // TODO Auto-generated method stub
- return “表情”;
- }
- //点击事件
- @SuppressWarnings(“static-access”)
- @SuppressLint(“ShowToast”)
- @Override
- public boolean onPluginClick(View arg0) {
- arg0.inflate(mContext, R.layout.select_dialog_item, null);
- return true;
- }
- }
实现这步后,还需要把他加入到 resetInputExtensionProvider 的数组里面。
- //我需要让他显示的内容的数组 此处示例 语音 位置 自定义 Test 模块
- ExtendProvider [] ep = {new LocationInputProvider(RongContext.getInstance()),new CameraInputProvider(RongContext.getInstance()), new TestProvider(RongContext.getInstance())};
- //我需要让他在什么会话类型中的 bar 展示
- RongIM.resetInputExtensionProvider(ConversationType.PRIVATE, ep);
此处值得注意的是根据数据的排序,你可以控制 bar 中的模块功能的位置,例如:我上图中将表情这个模块放在 数组的第三个位置,展现的位置就是第三个,这里开发者可以根据自已的需求或者喜好来控制 。