android 环信昵称设置,Android环信聊天头像昵称显示解决方案

在做环信聊天的时候,大家很有可能就把环信整个demo丢进自家工程里面了,的确是个非常省事的方法。但是呢,接下去看环信写的代码就要你花点时间了。本篇主要介绍了如何花最短的时间来解决头像以及昵称的问题。前提是你已经将工程导入项目,并接入了聊天界面以及会话列表。

方案就四个字:消息扩展(扩展字段,iOS & Android请保持一致,不然么法玩)

用到的地方

聊天界面里。

会话列表。

步骤

聊天列表点击进去把扩展信息传到聊天界面去

1.ConversationListFragment文件中找到setUpView方法,聊天列表的点击事件中加入以下代码

conversationListView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

EMConversation conversation = conversationListView.getItem(position);

String username = conversation.getUserName();

if (username.equals(EMClient.getInstance().getCurrentUser()))

Toast.makeText(getActivity(), R.string.Cant_chat_with_yourself, Toast.LENGTH_SHORT).show();

else {

// start chat acitivity

Intent intent = new Intent(getActivity(), ChatActivity.class);

if (conversation.isGroup()) {

if (conversation.getType() == EMConversationType.ChatRoom) {

// it's group chat

intent.putExtra(Constant.EXTRA_CHAT_TYPE, Constant.CHATTYPE_CHATROOM);

} else {

intent.putExtra(Constant.EXTRA_CHAT_TYPE, Constant.CHATTYPE_GROUP);

}

}

// it's single chat

intent.putExtra(Constant.EXTRA_USER_ID, username);

//这个人和你聊天的最后一条消息里面看是谁发的。判断方法就是取出这条消息发的人的环信id与你自己本地存储的环信id做匹配。是你发的与不是你发的,传入的值正好相反。

if (!conversation.getLastMessage().getFrom().equals(SPUtil.getHuanxinid(getContext()))) {

intent.putExtra("to_headportrait", conversation.getLastMessage().getStringAttribute("from_headportrait", ""));

intent.putExtra("to_username", conversation.getLastMessage().getStringAttribute("from_username", ""));

intent.putExtra("to_user_id", conversation.getLastMessage().getStringAttribute("from_user_id", ""));

} else {

intent.putExtra("to_headportrait", conversation.getLastMessage().getStringAttribute("to_headportrait", ""));

intent.putExtra("to_username", conversation.getLastMessage().getStringAttribute("to_username", ""));

intent.putExtra("to_user_id", conversation.getLastMessage().getStringAttribute("to_user_id", ""));

}

startActivity(intent);

}

}

});

将扩展信息加入进消息中。

2.全局搜onSetMessageAttributes方法,(在ChatFragment文件中)添加以下代码

try {

//我的信息,一般本地自己取出来

message.setAttribute("from_user_id", SPUtil.getUser(getContext()).getUser_id());

message.setAttribute("from_headportrait", SPUtil.getUser(getContext()).getHeadportrait());

message.setAttribute("from_username", SPUtil.getUser(getContext()).getUsername());

//对方的信息,一般上个界面传值传过来

message.setAttribute("to_user_id", getArguments().getString("to_user_id", ""));

message.setAttribute("to_headportrait", getArguments().getString("to_headportrait", ""));

message.setAttribute("to_username", getArguments().getString("to_username", ""));

} catch (Exception e) {

}

聊天列表的item项中根据消息中携带的信息来改变头像昵称

3.EaseConversationAdapter这个文件,找到 EaseUserUtils.setUserAvatar(getContext(), username, holder.avatar); EaseUserUtils.setUserNick(username, holder.name);,把这两行干掉,添加以下代码。还是根据这条消息是谁发的来做判断具体要加的图片与头像。

if (conversation.getLastMessage().getFrom().equals(SPUtil.getUser(getContext()).getHuanxinid())) {

Glide.with(getContext()).load(conversation.getLastMessage().getStringAttribute("to_headportrait", "")).placeholder(R.mipmap.zwf_one).transform(new GlideCircleTransform(getContext())).into(holder.avatar);

holder.name.setText(conversation.getLastMessage().getStringAttribute("to_username", ""));

} else {

Glide.with(getContext()).load(conversation.getLastMessage().getStringAttribute("from_headportrait", "")).placeholder(R.mipmap.zwf_one).transform(new GlideCircleTransform(getContext())).into(holder.avatar);

holder.name.setText(conversation.getLastMessage().getStringAttribute("from_username", ""));

}

聊天界面的头像也要处理一下

4.EaseChatRow这个文件,setUpBaseView方法里面找到以下代码,覆盖之。

//set nickname and avatar

if(message.direct() == Direct.SEND){

Glide.with(context).load(SPUtil.getHeadportrait(context)).centerCrop().transform(new GlideCircleTransform(getContext())).placeholder(R.mipmap.zwf_one).into(userAvatarView);

}else{

Glide.with(context).load(message.getStringAttribute("from_headportrait","")).centerCrop().transform(new GlideCircleTransform(getContext())).placeholder(R.mipmap.zwf_one).into(userAvatarView);

usernickView.setText(message.getStringAttribute("from_username",""));

}

到此,基本的显示头像昵称就应该可以了。这边图片加载用了Glide,头像是圆的,如果你项目中是其他图片加载框架自行替换吧。恩,五黑去了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值