一行代码实现群聊头像(用环信仿微信群聊头像)
做这个环信群聊头像的时候,我在考虑怎么自定义,怎么去拼接这个群聊头像,怎么获取群成员的头像,怎么在群成员退出群聊的时候更新头像,,,
群聊的东西真的很多,最近刚刚弄完群聊头像,并没有考虑到退出的时候怎么更新,这个问题应该很简单,所以,就放在哪里去干别的事了(帮助别人解决头像昵称去了)
好了,不多说,首先我们找到群聊列表,也就是GroupActivity;然后我们就会看到GroupAdapter,然后进入Adapter,找到Item的布局
图1这就是这个布局,很纳闷,为什么不把那个头像的id初始化出来呢?或许是因为这个头像为了用户的自定义,不写出来吧,有的人可能会自定义一个ImageView,也有人会那这个控件继承ViewGroup,而我,就是集成ViewGroup
然后,问题就来了,怎么获取到群成员的头像呢,首先一开始我们后台并没有给出接口,我自己请求了查看个人信息的接口,然后,For循环进一个ImageList,但是,这样太麻烦了;然后,我就指使我们后台写了个接口,利用群id查询所有群成员的id和头像,这样,简单多了。
因为集成ViewGroup的代码删除了,所以这里就用一位大神的例子来演示,继承ViewGroup实现群聊头像
好,那就开始写。。
图2在这里,我们只要一个NineGridImageView就可以了,因为这位大神是写了九个这个控件,分别是显示从一张到九张
图2关键代码在这里,这里就是Adapter,以前没接触过Adapter里面嵌套Adapter,然而,也是听说,就试了试这个,这里,这位大神用的是Picasso,在这里,我的上一篇文章已经简单讲了,Picasso和Gilde的区别,SO,我这里并没有用Picasso,Picasso和Gilde的加载代码也非常相似
图3这里同样,我们同样只需要设置一个GroudIcon;
然后就是下面的设置,这个setImagesData里面的东西大家可以去看看NineGridImageView这个类,很神奇。。
然后运行结果就是
图4你显示的头像就是红色框框里面的9张图片。(盗了个图,大家不要介意)
看到这里,大家是不是以为完了?,并没有,当你弄好了这个头像的时候,你就会看到,每次进入群聊界面就会刷新数据,头像就会重新加载一次,也就是会闪一次
然后我就找到了个终极解决办法,那就是找万能的后台。。。。
我们后台帮我们拼接图片,然后请求接口直接返回一张图片,这里就用到了get请求方式,用请求地址作为图片地址,然后仅仅只需要一行代码直接解决群头像的问题!!
图5看到没有,就是一行代码,但是这个也是有缺陷的,因为,我没有写成员退出群聊之后刷新,所以,大家自己加上吧
这里的头像解决了,但是会话列表那里呢?于是,我就查到EaseUI里面去了,就是会话列表EaseConversationAdapater
这里同样,也是一行代码
图6好了,大功告成,现在可以看到群成员的头像了
图7如果有疑问,请加入我大表哥粉丝群环信IM互帮互助群 340452063,找我,杭州-android-中草;