Android Socket IQ聊天软件 之 聊天气泡编码步骤讲解
之前我们说到了关于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聊天软件 之 聊天气泡编码步骤讲解相关推荐
- 仿微信界面开发的聊天软件和聊天客户端功能介绍
系统模式:独立系统版本,独立服务器部署,服务器配置:建议 4 核 8G:10M 带宽既可 以下是聊天系统客户端的功能介绍,服务端的功能我会再写一篇文章接着 仿微信聊天开发的聊天软件以及聊天客户端功能介 ...
- 用Android Studio写一个聊天软件(聊天室)
首先要了解四大组件的概念: Android 开发的四大组件分别是:活动Activity 是提供界面 (UI) 的一种应用组件:服务(service),后台运行服务,不提供界面呈现:广播接收器(Broa ...
- 用Delphi开发视频聊天软件
一.引言 我们知道视频聊天软件的关键技术在于采集视频,并实时传输给聊天软件在线的人.对于视频的采集,这里采用微软公司的关于数字视频的一个软件包VFW(Video for Windows).相信很多人对 ...
- 基于Delphi的网上视频聊天软件
摘要:目前网上视频聊天软件.视频会议软件.可视IP电话软件随处可见,你是否想自己做一个玩玩?其实这类软件无非是视频加上网络而建成的.如果熟悉视频捕捉和网络传输技术,根本就难不倒你.微软为软件开发人员提 ...
- 基于Android的聊天软件,Socket即时通信,实现用户在线聊天
基于Android的聊天软件,Socket即时通信,单聊,聊天室,可自行扩展功能,完善细节. [实例功能] 1.运行程序,登录界面, 注册账号功能 2.进入主界面,有通讯录, 个人信息. 3.点击好友 ...
- 基于Android Classic Bluetooth的蓝牙聊天软件
代码地址如下: http://www.demodashi.com/demo/12133.html BluetoothChat 基于Android Classic Bluetooth的蓝牙聊天软件,目前 ...
- 开发简单Android聊天软件(1)
总体介绍 开篇 大概思路 一. 客户端主要依赖 二.包引用完成后,创建wsClient类. 三.连接成功后,就可以在对于业务逻辑调用以下方法开始发送消息 开篇 本人是一位开发新人,将自己的开发学习过程 ...
- 开发简单Android聊天软件(7)
构建离线消息获取流程 在 "开发简单Android聊天软件(6)" 中,完成了完成消息接收和加载,构建一个完整的聊天流程. 但是我们只完成了一半,完成存量历史记录展示,和即时聊天的 ...
- Android聊天软件的开发(七)--聊天通信
聊天通信通过Socket实现,大概的框架如下图: 通信流程: 1.服务器在启动时开启聊天服务线程 可以通过ServletContextListener监听Servlet的初始化和销毁,来开启和关闭聊天 ...
最新文章
- 2018.3.6 11周1次课
- JAVA垃圾回收的几点知识
- markdown 公式_【建议收藏】数学公式如何用Markdown优雅地写出来
- python非阻塞输入_Python 命令行非阻塞输入的小例子
- 用 JavaScript 操作字符串
- (224)FPGA数字信号处理入门指导
- OPPO K9 Pro将于9月26日登场:搭载天玑1200旗舰游戏芯
- 决策树系列(三)——ID3
- WINDOWS自带md5校验工具
- 开上帝视角,其实你也能
- Python连接SQL Server 之pyodbc
- Android屏幕适配全攻略(最权威的官方适配指导)
- 支付宝app支付-php
- 没有PPT,一文带你了解元宇宙
- 游戏辅助小助手框架构想
- 51单片机生成C语言矩形波,单片机产生方波、锯齿波、三角波程序
- C语言-小写转换大写
- anacnda 子环境管理
- 斯蒂夫•沃兹尼亚克是如何为Apple从零开始开发BASIC的
- SWFText 让菜鸟也能轻易制作出专业级的Flash动画
热门文章
- 'OracleInternal.MTS.DTCPSPEManager' 类型初始值设定项引发异常
- “我们为什么要录用你?”应聘者如何回答?
- TensorRT文档翻译
- 对搜索引擎不友好的网站具有怎样的特点呢
- UIC564-2 附录4 –阻燃防火测试:火焰的扩散
- 一屏变双屏,有了ProPresenter 6你也可以做到!
- spark submit参数及调优(转载)
- java swt课程设计_Java-SWT怎么做图片水印和文字水印?
- 推荐系统论文笔记---Neural News Recommendation with Attentive Multi-View Learning
- 《爱上跑步的13周》,让你拥有健康美丽的人生