趁着2016年的最后一天,来写篇博客吧。最近结合Bmob与环信的学习,在一些实例的基础上完成了一个APP--悠贴,感兴趣的可以下载体验一下,做的比较糙。
这篇博文里用的是老版的环信SDK,最新的Bmob SDK,主要来简单讲讲头像与昵称的显示,其实主要是解决头像的显示问题。
那么如何快速实现头像显示呢?
首先,最基础的是实现用户注册,用户信息同时添加进环信与Bmob的后端服务器,这里不具体展开,有时间再来说明了。用户信息可以从这两个后端获取,这里将用户的头像图片信息存在了Bmob,然后在使用环信的即时通讯时引用Bmob里存储的相应用户的头像。具体效果如下:
实现过程很简单,只要在环信Demo的UserUtils.java里的setUserAvatar(Context context, String username, ImageView imageView)方法里添加如下代码:
final User user = getUserInfo(username);//
User users =new User();
final Context ct=context;
final String um=username;
final ImageView im=imageView;
BmobQuery<User> query1 = new BmobQuery<User>();
query1.findObjects(context, new FindListener<User>() {
@Override
public void onError(int code, String msg) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
Log.i("查询失败:",msg);
}
@Override
public void onSuccess(List<User> object) {
// TODO Auto-generated method stub
Log.i("查询成功:共",object.size()+"条数据。");
int j=object.size();
System.out.print(j+"\n");
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
int i=0;
int k=0;
HashMap<String, Object> map = new HashMap<String, Object>();
for (User qiangyu:object) {
if(qiangyu.getUsername() != null ){
//文件名称
//qiangyu.getContentfigureurl().getFilename();
map.put(qiangyu.getAvatar(),qiangyu.getUsername());
i++;
data.add(map);
}
}
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
String[][] ss = new String[map.size()][2];
for (i = 0; i < map.size(); i++) {
ss[i][0] = it.next();
ss[i][1] = (String) map.get(ss[i][0]);
System.out.print(ss[i][1]+"\n");
}
System.out.println(ss.length);
String [] urls = new String[(ss.length)*2];
String [] content= new String[(ss.length)*2];
for ( i = 0; i < ss.length; i++) {
for ( j = 0; j < ss[i].length; j++) {
urls[i+j] = ss[i][j+1];
System.out.println(urls[i+j]);
j++;
}
content[i]=ss[i][0];
// System.out.println(content[i]);
}
if(user != null){
for(i = 0; i < urls.length; i++){//MyApplication.getInstance().getCurrentUser().getUsername()
if(um.equals(urls[i].toLowerCase())){//字符串全以小写输出。
String avatarUrl = null;
if( content[i]!=null){
avatarUrl = content[i];//MyApplication.getInstance().getCurrentUser().getAvatar();
}
ImageLoader.getInstance()
.displayImage(avatarUrl, im,
MyApplication.getInstance().getOptions(R.drawable.user_icon_default_main),
new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
// TODO Auto-generated method stub
super.onLoadingComplete(imageUri, view, loadedImage);
}
});
break;
//Picasso.with(context).load(user.getAvatar()).placeholder(R.drawable.default_avatar).into(imageView);
}else{
Picasso.with(ct).load(user.getAvatar()).placeholder(R.drawable.default_avatar).into(im);
}
} //placeholder(R.drawable.default_avatar)
}else{
Picasso.with(ct).load(R.drawable.default_avatar).into(im);
}
}
});
具体说明:就是在Bmob后端里查询用户有关头像的信息(url),当环信里的用户名与Bmob中的用户名相一致,则显示头像,用ImageLoader.getInstance().displayImage()方法即可。
聊天界面效果如下:
这里只是做个简单的说明,具体的下次有时间展开介绍,谢谢支持~!