一、首先是UI界面的设计与制作

如上图所示是我设计的聊天背景与聊天视图,由于我们的聊天框是一张图片,它不可能跟着你的聊天字数内容长短而变化,这时我们需要对此进行处理,9-patchFile功能将图的四边进行拉处理在应用到聊天框就可以使此图片随着你的聊天内容增加而伸展,大大提高了美观的程度。

这是制作出的效果:
可以向任意方向做拉伸。具体的制作方法:将图片贴到drawable目录下保存成.jpg格式然后在图片名称上右击鼠标你就会看见Create 9-patch File这个复选框选中进行操作即可。
下面是我的Msg.xml的代码:

activity.xml的代码:

一个edittext输入框一个button发送按钮。
这就不用我自己赘述了吧,个人有个人的想法,设计属于你自己的聊同安界面布局吧。
二、java逻辑代码
这里建立了三个类文件,分别为:MsgAdapter、Msg、MainActivity。
Msg的代码如下:

Msg类中只有两个字段,content表示消息的内容,type表示消息的类型。其中消息类型有两个值可选,TYPE_RECEIVED表示收到消息,TYPE_SENT表示发出消息。
创建RecyclerView的适配器MsgAdapter代码:

onBindViewHolder(),对消息类型做出判断。
最后是MainActivity的代码:


initmsgs()方法中初始化几条用于RecyclerVIew中显示,发送按钮的点击事件获取Editext中的内容,如内容部位NULL则创建新的Msg对象,并把它添加到msgList列表中去。之后又调用notifyItemInserted()方法用于通知列表有新的数据插入。
至此就完成了…

一个简易聊天窗口的制作相关推荐

  1. [Android]自定义绘制一个简易的音频条形图,附上对MP3音频波形数据的采集与展现

      在项目中需要到数据统计的地方,往往都需要到一些图的展示,比如曲线图.折线图.饼状图.圆形图.条形图等等.在本文中我们来实现一个简易的条形图的绘制.   首先,我们创建一个BarGraphView类 ...

  2. 使用Java制作一个简易的远控终端

    使用Java制作一个简易的远控终端 远控终端的本质 1.服务端(攻击者)传输消息 ----> socket连接 ----> 客户端(被攻击者)接收消息 2.客户端执行消息内容(即执行服务端 ...

  3. C#制作一个简易抽奖或摇号器

    自己制作了一个简易的摇号器,使用的是C#语言,利用随机数,在一个richtextbox里产生随机数字,利用两个numericupdown来控制范围和个数. 如图 给摇号button添加click事件 ...

  4. JavaScript制作简易聊天窗口

    前言 制作聊天窗口需要三部分代码:html代码.css样式.js代码 一.效果图 二.代码 1.js代码 代码如下(示例): <script type="text/javascript ...

  5. 利用CSS浮动制作一个简易导航栏

    初学CSS,利用CSS浮动和无序列表制作一个简易导航栏: <!DOCTYPE html> <html lang="en"> <head>< ...

  6. 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具

    查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...

  7. 用Python制作一个简易的计时器

    前言 今天又带来个小玩意 - 用Python制作一个简易的计时器 这个其实也能自定义一些东西的 就比如名字 颜色啥的 自己看着改就行 有想法的朋友也能自己再写写改改出其他的小功能 效果展示 实现代码 ...

  8. 制作一个简易的计算器

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  9. 四节1.5V的5号电池、一个电容、一个12V的报警蜂鸣器、铜线和螺母,在螺母所栓的铜线触发接通电源后,缓慢放电10秒,制作一个简易震动报警器,需要用什么样的电容合适?...

    根据题目描述,需要制作一个简易震动报警器,使用四节1.5V的5号电池作为电源,一个电容,一个12V的报警蜂鸣器,铜线和螺母.在螺母所栓的铜线触发接通电源后,需要缓慢放电10秒. 在这种情况下,需要一个 ...

最新文章

  1. Redis Primer(1)基于JedisPool的Redis hset并发性能测试 - @钟超 · 技术博客专栏 - 博客频道 - CSDN.NET...
  2. alpine linux docker容器时区修改
  3. 《C和指针》学习备忘
  4. C++封装常用对象和对头文件以及预编译机制的探索
  5. 【C++学习笔记一】C++类和对象详解
  6. 我们需要打造有意识的人工智能吗?
  7. python dataframe 列赋值_dataframe根据新列特征的条件为其赋值,给
  8. Linux下文件的打包、解压缩指令——tar,gzip,bzip2,unzip,rar
  9. 如何通过a/a中的href刷新当前界面
  10. python中time模块time函数怎么写的_Python的time模块中的常用方法整理
  11. Mybatis教程-实战
  12. ST 电机库 电机位置环7天冲刺开发
  13. H264编码器性能测试
  14. 新概念下兴起域名商机 云域名是神马浮云
  15. CSU——1043克里莫
  16. 利用Python里的cv2(opencv)改变图片大小【同时也是cv2.resize的学习】
  17. 微信小程序 php解密,微信小程序des加密、PHP des解密
  18. 帆软 ---- 单元格显示固定大小
  19. Spring WebFlux
  20. JavaScript常用技巧:stroage封装

热门文章

  1. Table ‘ecology.e9_para_group_concat_max_len‘ doesn‘t exist
  2. python取出tensor里面的数据_tensorflow实现tensor中满足某一条件的数值取出组成新的tensor...
  3. 利用DuplicateHandle()无驱动的另类读写内存方法,理论上可以过游戏保护读写
  4. ubuntu字体美化
  5. Spring配置文件中引入properties文件
  6. 微信小程序 代码实现 分享朋友圈
  7. apache 设置默认页面
  8. cocos2d弹窗_CocosCreator游戏弹窗实现
  9. Android 点击按钮熄屏
  10. jvm优化之Jenkins优化