之前我们说到了关于IQ聊天软件的局域网聊天测试,今天给大伙说说气泡的生成和编码,这不是第三方的东西,是自己

开发的,需要整合布局和容器来实现,其实当你看到源码后,就会觉得很简单,不信你跟着我往下看

首先说说我编程的思想,我们在一个Activity里要动态生成一个消息列表,那ListView是必不可少的容器了,这是其一

其二,我们可以清楚的知道,“我”和好友的气泡底色都是不同的,QQ的底色为:“我”为白底,好友“绿底”,不过这是以前老版本的,现在的新版本有自定义气泡,种类很多,我们就不一一介绍了,所以我们需要定义两个ListView Item 来填充ListView

其三,我们把布局文件写好后,剩下的就是加载消息列表了,今天就着重说说气泡的开发吧,然后大致讲讲气泡消息列表的加载

首先创建一个Activity,添加一个ListView,因为源码都上传了,这里就不贴代码了

分别定义 “我” 和 好友 的消息气泡布局文件:

此为好友的消息气泡布局,布局源码请到

源码下载地址,附带数据库:http://download.csdn.net/detail/jspping/8067509

主布局是线性布局,在主布局下添加了一个头像Imageview、一个发送时间Textview,嵌套了一个线性布局,给线性布局添加了一个背景图片,也就是绿底色气泡,在线性布局里添加了一个好友消息 TextView,显示好友发送的消息

我的气泡:

气泡实时动态加载核心代码:

     et_input=(EditText) findViewById(R.id.et_input);findViewById(R.id.ib_send).setOnClickListener(new OnClickListener(){public void onClick(View v) {myAccount=MoreActivity.me.getAccount();ObjectOutputStream oos;try {oos = new ObjectOutputStream//通过account找到该线程,从而得到OutputStream(ServerManager.getClientConServerThread(myAccount).getSocket().getOutputStream());//得到输入的数据,并清空EditTextchatContent=et_input.getText().toString();et_input.setText("");//发送消息IQMSG m=new IQMSG();m.setType(IQMSGResult.COM_MES);m.setSender(myAccount);m.setSenderNick(MoreActivity.me.getNick());m.setSenderAvatar(MoreActivity.me.getAvatar());m.setReceiver(chatAccount);m.setContent(chatContent);m.setSendTime(IQTime.geTimeNoS());oos.writeObject(m);//更新聊天内容updateChatView(new MessageEntity(MoreActivity.me.getAvatar(),chatContent,IQTime.geTime(),false));} catch (IOException e) {e.printStackTrace();}}});//注册广播IntentFilter myIntentFilter = new IntentFilter(); myIntentFilter.addAction("engineer.jsp.iq.Client.mes");br=new MyBroadcastReceiver();registerReceiver(br, myIntentFilter);ManageActivity.addActiviy("MessageActivity", this);}@Overridepublic void finish() {unregisterReceiver(br);super.finish();}//广播接收器public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String[] mes = intent.getStringArrayExtra("message");Log.i("MessageActivity", "数据:"+mes);//更新聊天内容updateChatView(new MessageEntity(Integer.parseInt(mes[2]),mes[3],mes[4],true));}}public void updateChatView(MessageEntity chatEntity){chatEntityList.add(chatEntity);chatListView=(ListView) findViewById(R.id.lv_chat);chatListView.setAdapter(new MessageAdapter(this,chatEntityList));}


有不懂得,请在本博客留言,第一时间看到,第一时间解答!,谢谢,Engineer-Jsp撰~~

Android Socket IQ聊天软件 之 聊天气泡编码步骤讲解相关推荐

  1. 仿微信界面开发的聊天软件和聊天客户端功能介绍

    系统模式:独立系统版本,独立服务器部署,服务器配置:建议 4 核 8G:10M 带宽既可 以下是聊天系统客户端的功能介绍,服务端的功能我会再写一篇文章接着 仿微信聊天开发的聊天软件以及聊天客户端功能介 ...

  2. 用Android Studio写一个聊天软件(聊天室)

    首先要了解四大组件的概念: Android 开发的四大组件分别是:活动Activity 是提供界面 (UI) 的一种应用组件:服务(service),后台运行服务,不提供界面呈现:广播接收器(Broa ...

  3. 用Delphi开发视频聊天软件

    一.引言 我们知道视频聊天软件的关键技术在于采集视频,并实时传输给聊天软件在线的人.对于视频的采集,这里采用微软公司的关于数字视频的一个软件包VFW(Video for Windows).相信很多人对 ...

  4. 基于Delphi的网上视频聊天软件

    摘要:目前网上视频聊天软件.视频会议软件.可视IP电话软件随处可见,你是否想自己做一个玩玩?其实这类软件无非是视频加上网络而建成的.如果熟悉视频捕捉和网络传输技术,根本就难不倒你.微软为软件开发人员提 ...

  5. 基于Android的聊天软件,Socket即时通信,实现用户在线聊天

    基于Android的聊天软件,Socket即时通信,单聊,聊天室,可自行扩展功能,完善细节. [实例功能] 1.运行程序,登录界面, 注册账号功能 2.进入主界面,有通讯录, 个人信息. 3.点击好友 ...

  6. 基于Android Classic Bluetooth的蓝牙聊天软件

    代码地址如下: http://www.demodashi.com/demo/12133.html BluetoothChat 基于Android Classic Bluetooth的蓝牙聊天软件,目前 ...

  7. 开发简单Android聊天软件(1)

    总体介绍 开篇 大概思路 一. 客户端主要依赖 二.包引用完成后,创建wsClient类. 三.连接成功后,就可以在对于业务逻辑调用以下方法开始发送消息 开篇 本人是一位开发新人,将自己的开发学习过程 ...

  8. 开发简单Android聊天软件(7)

    构建离线消息获取流程 在 "开发简单Android聊天软件(6)" 中,完成了完成消息接收和加载,构建一个完整的聊天流程. 但是我们只完成了一半,完成存量历史记录展示,和即时聊天的 ...

  9. Android聊天软件的开发(七)--聊天通信

    聊天通信通过Socket实现,大概的框架如下图: 通信流程: 1.服务器在启动时开启聊天服务线程 可以通过ServletContextListener监听Servlet的初始化和销毁,来开启和关闭聊天 ...

最新文章

  1. 2018.3.6 11周1次课
  2. JAVA垃圾回收的几点知识
  3. markdown 公式_【建议收藏】数学公式如何用Markdown优雅地写出来
  4. python非阻塞输入_Python 命令行非阻塞输入的小例子
  5. 用 JavaScript 操作字符串
  6. (224)FPGA数字信号处理入门指导
  7. OPPO K9 Pro将于9月26日登场:搭载天玑1200旗舰游戏芯
  8. 决策树系列(三)——ID3
  9. WINDOWS自带md5校验工具
  10. 开上帝视角,其实你也能
  11. Python连接SQL Server 之pyodbc
  12. Android屏幕适配全攻略(最权威的官方适配指导)
  13. 支付宝app支付-php
  14. 没有PPT,一文带你了解元宇宙
  15. 游戏辅助小助手框架构想
  16. 51单片机生成C语言矩形波,单片机产生方波、锯齿波、三角波程序
  17. C语言-小写转换大写
  18. anacnda 子环境管理
  19. 斯蒂夫•沃兹尼亚克是如何为Apple从零开始开发BASIC的
  20. SWFText 让菜鸟也能轻易制作出专业级的Flash动画

热门文章

  1. 'OracleInternal.MTS.DTCPSPEManager' 类型初始值设定项引发异常
  2. “我们为什么要录用你?”应聘者如何回答?
  3. TensorRT文档翻译
  4. 对搜索引擎不友好的网站具有怎样的特点呢
  5. UIC564-2 附录4 –阻燃防火测试:火焰的扩散
  6. 一屏变双屏,有了ProPresenter 6你也可以做到!
  7. spark submit参数及调优(转载)
  8. java swt课程设计_Java-SWT怎么做图片水印和文字水印?
  9. 推荐系统论文笔记---Neural News Recommendation with Attentive Multi-View Learning
  10. 《爱上跑步的13周》,让你拥有健康美丽的人生