从网上看了这么多的案例都是坑呐。。
所以自己写一个。。
首先是集成环信的model,这个有很多教程,不过还是写下我集成的过程。。
第一步 注册。。
瞎填就好,反正没有关系。。
第二步 下载sdk和module。。
第三步 导入easyui这个module
我们集成其中的easyui这个module
在 examples下有个easyui
如何导入module呢?
点这个。。
然后添加到依赖里。。
先点这个
然后点这个
ok了同志们到现在为止,我们就成功的将环信的easyui添加进去了。。
接下来是使用。。
第四步 设置头像昵称。。
看一下easyui的源码,我们发现了一个接口叫做
/** * User profile provider * @author wei * */
public interface EaseUserProfileProvider {
/** * return EaseUser for input username * @param username * @return */
EaseUser getUser(String username);
}
啊哈,看来这个接口有点意思。
并且有set函数叫做在EaseUI
这个类里
/** * set user profile provider * @param provider */
public void setUserProfileProvider(EaseUserProfileProvider userProvider){
this.userProvider = userProvider;
}
那么我们实现这个接口就好了。。
public class MyUserProvider implements EaseUI.EaseUserProfileProvider {
private static MyUserProvider myUserProvider;
// 设计成了单类。。
private Map<String,EaseUser> userList = new HashMap<>();
// 我服务器上获得头像的url
private String ImgUrl="http://xxxxx";
@Override
public EaseUser getUser(String username) {
if(userList.containsKey(username))
//有就返归这个对象。。
return userList.get(username);
System.out.println("error : 没有 数据" + username);
return null;
}
// 封装了一下
public void setUser(String username,String nickname){
if(!userList.containsKey(username)) {
EaseUser easeUser = new EaseUser(username);
userList.put(username,easeUser);
}
EaseUser easeUser = getUser(username);
// 不用怀疑。环信的easerUser的父类有一个setNickname 的方法可以用来设置昵称,直接调用就好。。
easeUser.setNickname(nickname);
// 同理,设置一个图像的url就好,因为他加载头像是使用glide加载的
easeUser.setAvatar(ImgUrl+username);
}
// 按照你喜欢的修改一下初始化函数吧,
private MyUserProvider(){
System.out.println("init myTestProfileProvider");
}
// 获取单类。。
public static MyUserProvider getInstance() {
if (myUserProvider == null) {
myUserProvider = new MyUserProvider();
}
return myUserProvider;
}
}
ok了,自此就可以完美的使用easyui,并且可以显示用户头像和昵称了。。
当然了不要忘了调用和初始化
在你的环形初始化的那个类里面加上这一句
// 设置自己实现的提供用户名和昵称的provider EaseUI.getInstance().setUserProfileProvider(MyUserProvider.getInstance());
实现显示用户头像和昵称的原理。。
为什么呢?看下源码。。
这是easyui里 加载头像和昵称的源码。。
/** * set user avatar * @param username */
public static void setUserAvatar(Context context, String username, ImageView imageView){
EaseUser user = getUserInfo(username);
if(user != null && user.getAvatar() != null){
try {
int avatarResId = Integer.parseInt(user.getAvatar());
Glide.with(context).load(avatarResId).into(imageView);
} catch (Exception e) {
//use default avatar
Glide.with(context).load(user.getAvatar()).diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.drawable.ease_default_avatar).into(imageView);
}
}else{
Glide.with(context).load(R.drawable.ease_default_avatar).into(imageView);
}
}
\\ 加载昵称的。。
/** * set user's nickname */
public static void setUserNick(String username,TextView textView){
if(textView != null){
EaseUser user = getUserInfo(username);
if(user != null && user.getNickname() != null){
textView.setText(user.getNickname());
}else{
textView.setText(username);
}
}
}
然后这是 easyui里 getUserInfo()
的实现
/** * get EaseUser according username * @param username * @return */
public static EaseUser getUserInfo(String username){
if(userProvider != null)
return userProvider.getUser(username);
return null;
}
啊哈就是调用我们实现的接口类。。
所以说实现一个接口类就可完美的做到自定义昵称和头像。。我搜索了半天都没有找到如何实现的。。
蓝瘦。。
聊天如何实现的和源码啥的,我整理一下就放到下面。。