最近项目中用到腾讯的即时通讯(云通信),做到C2C聊天这块。需要将聊天界面的己方和对方的默认头像替换掉。

具体操作如下:

1:对ChatAdapter.java类新增

private TIMUserProfile mMySelfProfile;

private TIMUserProfile mMyFriendProfile; 成员变量。通过get或者set方式注入。

对ChatAdapter.ViewHolder也新增

public TIMUserProfile mMySelfProfile;
public TIMUserProfile mMyFriendProfile; 成员变量.

通过ChatAdapter对ChatAdapter.ViewHolder的成员变量赋值;

2:对Message类的子类的showMessage(ChatAdapter.ViewHolder viewHolder, Context context)方法,

已TextMessage为例,其他子类依次类推:

@Override
    public void showMessage(ChatAdapter.ViewHolder viewHolder, Context context) {
        clearView(viewHolder);
        if (checkRevoke(viewHolder)) return;
        boolean hasText = false;
        TextView tv = new TextView(MyApplication.getContext());
        tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
        tv.setTextColor(MyApplication.getContext().getResources().getColor(isSelf() ? R.color.color_666666 : R.color.color_666666));
        List<TIMElem> elems = new ArrayList<>();
        for (int i = 0; i < message.getElementCount(); ++i){
            elems.add(message.getElement(i));
            if (message.getElement(i).getType() == TIMElemType.Text){
                hasText = true;
            }
        }
        SpannableStringBuilder stringBuilder = getString(elems, context);
        if (!hasText){
            stringBuilder.insert(0," ");
        }
        tv.setText(stringBuilder);
        getBubbleView(viewHolder).addView(tv);
        if(viewHolder.mMySelfProfile!=null){//这里采用的是facebook的图片加载,请大家自己按照自己的图片加载方式加载,这里不多叙述
        Utils.setImageByUrlOfPicasso(context.getApplicationContext(),viewHolder.mMySelfProfile.getFaceUrl(),viewHolder.rightAvatar,R.drawable.head_me);
        }
        if(viewHolder.mMyFriendProfile!=null){
        Utils.setImageByUrlOfPicasso(context.getApplicationContext(),viewHolder.mMyFriendProfile.getFaceUrl(),viewHolder.leftAvatar,R.drawable.head_other);
        }

        showStatus(viewHolder);
    }

3:ChatActivity类的改造:

通过TIMFriendshipManager.getInstance().getUsersProfile(users, cb);异步加载用户资料获取自己和用户的资料

/**

* @Title: initTIMAction
* @Description: 获取聊天2个人资料
* @return void
* @throws
*/
private void initTIMAction() {
List<String> users = new ArrayList<String>();
users.add(identify);
final String user = (String) SPUtil.get(getApplicationContext(),
ContentValue2.TX_IDENTIFIER_FLAG, "");
if (!TextUtils.isEmpty(user)) {
users.add(user);
}
mISigModel.getUsersProfile(users,
new TIMValueCallBack<List<TIMUserProfile>>() {

@Override
public void onSuccess(List<TIMUserProfile> result) {
TIMUserProfile mySelf = null;
TIMUserProfile myFriend = null;
for(TIMUserProfile bea:result){
if(bea.getIdentifier().equals(user)){//自己
mySelf = bea;
}else{
myFriend= bea;
}
}
if( mySelf!=null && myFriend!=null){
startTX(mySelf, myFriend);
mySelf = null;
myFriend= null;
}
}

@Override
public void onError(int code, String desc) {
LogUtil.e("addFriend failed: code=" + code + " ,desc="
+ desc);
startTX(null, null);
}
});
}

private void startTX(TIMUserProfile mySelf, TIMUserProfile myFriend) {
input = (ChatInput) findViewById(R.id.input_panel);
input.setChatView(this);
adapter = new ChatAdapter(this, R.layout.item_message, messageList);
if (mySelf != null)
adapter.setmMySelfProfile(mySelf);
if (myFriend != null)
adapter.setmMyFriendProfile(myFriend);
listView.setAdapter(adapter);
registerForContextMenu(listView);
voiceSendingView = (VoiceSendingView) findViewById(R.id.voice_sending);
presenter.start();
}

至此。可以测试!

Android 腾讯 云通信 用户头像更新相关推荐

  1. 腾讯云老用户重新注册新账号算新用户吗?

    腾讯云重新注册账号算新用户吗?实名认证信息和老用户不同的话,算新用户.腾讯云老用户重新注册账号算新用户吗?算,但有限制,为了防止羊毛党薅羊毛,腾讯云也是有风控系统的,腾讯云百科告诉大家如何重新注册账号 ...

  2. 腾讯云新用户怎么配置服务器的方法教程

    腾讯云新用户怎么配置服务器?腾讯云服务器配置选择攻略,先选择云服务器地域和可用区,然后根据用户使用场景需要平衡型.计算型或高IO型等特性来选择云服务器CVM实例规格,主机教程网来详细说下腾讯云服务器配 ...

  3. 腾讯云域名 OpenWrt 自动更新IP shell脚本

    腾讯云域名 OpenWrt 自动更新IP shell脚本 需要这个功能 然后找了很多资料都没有 看到一篇类似的本文 原文链接:https://blog.csdn.net/qq_38106751/art ...

  4. 【亲测可行】如何申请并登录腾讯云15天免费服务器(限腾讯云新用户)

    记录一次免费腾讯云服务器的申请过程,其中: [服务器类型]腾讯云 [面向人群]腾讯云新用户 [价格]免费15天 目录 一.申请云服务器 1.百度搜索"腾讯云",点击官网链接进入 2 ...

  5. 腾讯云通信WebIM事件回调的坑~

    最近在开过工作中用到了腾讯IM的功能,由于业务的需要主要使用到了: 1.loginInfo 用户登录,用户信息 2.getRecentContactList 获得最近联系人 3.getLastGrou ...

  6. android直播 腾讯云,Android 腾讯云直播 自定义消息收发

    写在前面 最近呢,在做腾讯云直播,也已经实现功能啦,现在就开始总结一下,腾讯云直播的自定义消息收发. 云直播的自定义消息收发,不得不说的点就是 腾讯云IM,做过腾讯云IM的都知道 消息总体分为以下几种 ...

  7. mysql数据库腾讯云添加用户,解决腾讯云cdb的基础版mysql不支持新建账号

    腾讯云一贯被叫良心云,确实挺良心的,机器稳定,工单响应快,各种各样的活动不停.我也入手了不少的机器. 刚新入手了一个基础版的cdb云数据库,才3块钱一个月,一口气买了3年,美滋滋. 去到网页控制面板, ...

  8. 家庭宽带 动态公网IP,使用腾讯云DDNS实现实时更新DNS解析记录

    解决DDNS问题 动态公网IP 环境说明: 我是家庭宽带 只能申请到动态的公网ip,好处是不花钱,弊端是每次重启光猫,都会重新获取一个新的公网IP 为解决此办法,我尝试了很多个DDNS的方案. 包括但 ...

  9. Android腾讯云对象存储上传图片

    最近使用腾讯云对象存储,项目比较赶,想找个现有的复制结果找了半天,全是官方文档,最后乖乖的自己写了,记录一下以后用的时候方便. 腾讯云对象存储官方文档地址:https://cloud.tencent. ...

  10. android 集成腾讯定位,Android集成腾讯云通信IM

    本篇文章结构 一.集成流程. 二.集成中遇到的问题 集成过程 TIM图片20180425151417.png 很清楚,前几部没什么说的,去官网注册账号就好了,我们接下来看账号集成. 首先第一步是集成模 ...

最新文章

  1. k8s kubectl create命令使用详解
  2. php访问mysql函数吗,PHP访问MySQL数据库函数简介
  3. 剪板机自动上下料_全自动上下料机械手系统的优势
  4. SpringBoot 2 集成微信扫码支付
  5. JS让本地图片预览不再难-jquery插件
  6. mysql 右模糊_面试小知识:MySQL索引相关
  7. iphone 控制 android手机,苹果手机如何远程控制安卓手机
  8. Sensor系列五 App实现获取gsensor数据
  9. 用大数据解决“痛点”问题 “云上贵州”再发力
  10. Android 自定义相机 切换相机 参考线(辅助线) 闪光灯 缩放 自动聚焦 Demo
  11. **DNS中A记录和CNAME记录的区别(转)
  12. vue页面背景颜色修改
  13. Java趣味编程(一)
  14. a类计算机机房建设标准,A类机房建设标准和B类机房建设标准有什么差别
  15. 对Titanic公开数据集进行缺失值统计
  16. Moodle专题网站链接
  17. 如何精准引流?教你适合各个行业精准引流的方法
  18. MySQL索引分析扩展理解
  19. 比尔总动员怎么创建角色
  20. 三款Linux下最好的看图工具GPicView,sxiv,feh

热门文章

  1. android logo颜色渐变,华为悄然更新品牌Logo:无渐变色,更加扁平化
  2. 《查拉图斯特拉如是说》读书笔记
  3. MongoDB安装Python操作MongoDB
  4. latex 两行 大括号_用laTeX排版大括号的三种方法
  5. 添加打印机无法搜索计算机,添加打印机时搜索不到如何解决 电脑搜不到打印机设备的处理办法...
  6. 微型计算机有哪些型号,微型计算机一般按什么进行分类
  7. html手动加css,添加自动到手动滑盖HTML5 - CSS
  8. C++中优先队列priority_queue的基础用法
  9. 软件著作权申请流程和注意事项
  10. 拆与组装计算机的全过程,拆装及组装电脑方法