使用环境:
2018年集成的腾讯IM云通信,使用的是随心聊类似的集成方式。
2019年集成的时候,官方推荐TUIKIT依赖module
github官方demo给的SDK版本已经更新到4.0.10,但是对于用户关系特别是头像等相关没有做集成处理。
这也就导致了,我没有办法主动给聊天人员设置头像,也没有从MessageInfo 中获取消息发送者头像的函数。
本人集成的是腾讯IM通信的TUIKIT 4.0.10群组聊天功能,所以,只给出了修改群组聊天头像的方法和思路。
至于单聊头像的方法和思路,过一段时间再做解析。、
效果图:
改动以前:
修改以后:
解决方法直接看第5步:chatAdapter
解决流程:
1 ShadeImageView 继承ImageView的图像展示view
|
功能 |
添加显示图片的圆角 |
2 SynthesizedImageView 继承ShadeImageView 图片显示view
|
功能 |
设置默认聊天图片 设置图片显示圆角和大小 |
3 SessionIconView 布局使用SynthesizedImageView显示头像的view
|
功能 |
重复设置会话列表图像的默认图片 |
|
使用位置 |
SessionAdapter 回话列表listView的适配器 在这里判断是否是group群组聊天 不是,显示个人聊天个人头像 是,显示群组聊天头像 |
4 ChatIconView 布局使用SynthesizedImageView显示头像的view
|
功能 |
重复设置聊天头像的默认图片 |
|
使用位置 |
ChatAdapter 在这里对聊天界面的内容进行展示 包括设置聊天头像(我/其他人) |
5 ChatAdapter 聊天界面列表适配器
|
onBindViewHolder |
理由viewHolder来对列表进行复制的方法 |
在此方法内,有对聊天界面头像的赋值方法:
思路: 根据msg.getFromUser()获取聊天对象的名称
根据UserName获取此人头像
赋值头像
//判断消息是否是我的,如果是就使用从右往左的布局,如果不是,使用从左往右的布局
//TODO 在这里对各方显示头像进行判断处理
//根据msg.getFromUser()获取发送消息人的name ,
//让后台做一接口:根据Name获取headIcon,并赋值
if (msg.isSelf()) {
LogUtil.e("是我发送的name==>" + msg.getFromUser());
chatHolder.userIcon.setDefaultImageResId(R.drawable.send_normal);//我的消息头像赋值
if (chatHolder.dataView != null) {
if (mRecycleView.getSelfBubble() != null) {
chatHolder.dataView.setBackground(mRecycleView.getSelfBubble());
} else {
chatHolder.dataView.setBackgroundResource(R.drawable.chat_self_bg);
}
}
} else {
LogUtil.e("不是我发送的name==>" + msg.getFromUser());
chatHolder.userIcon.setDefaultImageResId(R.drawable.send_pressed);//不是我的消息,头像赋值
if (chatHolder.dataView != null) {
if (mRecycleView.getOppositeBubble() != null) {
chatHolder.dataView.setBackground(mRecycleView.getOppositeBubble());
} else {
chatHolder.dataView.setBackgroundResource(R.drawable.chat_opposite_bg);
}
}
}
至此,群聊头像修改方法结束。
有任何需要讨论的问题请联系
QQ: 88627109
欢迎您的到来