融云 Android SDK 2.1+ 稳定版 UI 和 模块功能自定义

融云 Android SDK 2.1+ 稳定版 UI 和 模块功能自定义

注:此博文只适用于 RongCloud Android SDK  IMkit 2.1.0 以后的版本

如何在融云会话界面输入区扩展功能(点击“+”弹出的 bar)中,对默认的图片、相机、位置、语音功能进行添加或删除:

android_InputProvider

如上图所示: 如只需要在单聊的 bar 中使用位置和相机功能,需要在代码中做如下配置:(另外两个配置类  ImageInputProvider 相册  VoIPInputProvider 语音)

  1. //我需要让他显示的内容的数组  此处示例 语音 位置  
  2. ExtendProvider [] ep = {new LocationInputProvider(RongContext.getInstance()),new CameraInputProvider(RongContext.getInstance())};
  3.  //我需要让他在什么会话类型中的 bar 展示    
  4.  RongIM.resetInputExtensionProvider(ConversationType.PRIVATE, ep);

配置完成运行以后,你会发现你单聊的 “+” 中 bar 里面就会出现如上图的效果。

注意:

1、如果您自己的工程当中点击出来就没有位置的模块 是因为您没有实现 RongIM.LocationProvider  相关代码。

2、如果您不需要使用到语音相关的功能 你可以把 bar 中的语音隐藏后,再把工程的 libs 的 arm arm-v7 x86 中的语音相关的 voip.so umcs.so 删除,这样可以减小你 apk。

如何在 “+” 中的 bar 增加自定义模块:

android_addInputProvider

首先您需要去 自定义一个类  继承  ExtendProvider   然后实现他的 构造方法  和 没有实现的 方法 详情见下面代码:

  1. public class TestProvider extends ExtendProvider{  
  2.       
  3.     private Context mContext;  
  4.   
  5.     public TestProvider(RongContext context) {  
  6.         super(context);  
  7.         mContext = context;  
  8.     }  
  9.     //设置 展示的图标   
  10.     @Override  
  11.     public Drawable obtainPluginDrawable(Context arg0) {  
  12.         // TODO Auto-generated method stub  
  13.         return arg0.getResources().getDrawable(R.drawable.btn_default);  
  14.     }  
  15.     //设置 图标下的title  
  16.     @Override  
  17.     public CharSequence obtainPluginTitle(Context arg0) {  
  18.         // TODO Auto-generated method stub  
  19.         return “表情”;  
  20.     }  
  21.     //点击事件  
  22.     @SuppressWarnings(“static-access”)  
  23.     @SuppressLint(“ShowToast”)  
  24.     @Override  
  25.     public boolean onPluginClick(View arg0) {  
  26.         arg0.inflate(mContext, R.layout.select_dialog_item, null);  
  27.         return true;  
  28.     }  
  29.   

实现这步后,还需要把他加入到 resetInputExtensionProvider 的数组里面。

  1. //我需要让他显示的内容的数组  此处示例 语音 位置 自定义 Test 模块  
  2. ExtendProvider [] ep = {new LocationInputProvider(RongContext.getInstance()),new CameraInputProvider(RongContext.getInstance()),   new TestProvider(RongContext.getInstance())};
  3.         //我需要让他在什么会话类型中的 bar 展示    
  4.         RongIM.resetInputExtensionProvider(ConversationType.PRIVATE, ep);

此处值得注意的是根据数据的排序,你可以控制 bar 中的模块功能的位置,例如:我上图中将表情这个模块放在 数组的第三个位置,展现的位置就是第三个,这里开发者可以根据自已的需求或者喜好来控制 。