今日科技快讯

日前,中国智能手机品牌vivo宣布,与国际足球联合会(FIFA)达成为期6年的FIFA世界杯全球赞助合作,贯穿两届比赛。这意味着vivo将连续成为2018年及2022年两届世界杯全球官方赞助商。届时,vivo标志将出现在FIFA世界杯比赛的场边广告牌、门票、新闻发布会背景板以及其他相关重要场合。vivo期望借助FIFA世界杯在全球的影响力,将品牌带到一个全新的高度。

作者简介

这周才上了三天班,突然发现明天就是周末啦,好开心有木有,提前祝大家周末愉快!

本篇来自 fitzeng 的投稿,分享了他开发一个聊天工具的历程,希望大家喜欢!

fitzeng 的博客地址:

http://fitzeng.org

Part One
  • 效果图

*由于大小限制,这里的图片我做了压缩,大图可点击最后 阅读原文 查看

  • 原因

由于在间间断断的学Android,所以学的知识比较杂,想做个小项目来复习复习。所以之前在课后十天左右的时间完成了一个刚刚具备聊天功能的App,由于这几天拼命的搜寻资料,发现网上并没有一个完整的开发过程的文章。平时也就是看看大牛们的博客学习,现在觉得也要多和大家分享自己学到的知识,共同进步。可能你在这学不到技术深度的东西,但是说不定可以扩展你的技术广度。

  • 目标人群

推荐给正处于Android进阶的人群,想写一个App却不知道如何开始。希望我的这些文字对你能有帮助。最少基本过了一遍《第一行代码》,读过《Android群英传》就更好了。由于我是以一个遇到问题解决问题的视角来写的,所以基本会让你的开发过程思路清晰,知道这么做的目的和好处。同时这也是一个开始完全不知道怎么写到实现基本功能的心路历程描述。所以应该会有点价值吧。当然涉及的东西确实有点多,所以不可能一一叙述,欢迎大家留言讨论。

  • 知识

数据库相关知识(基本的增删改查)

Java(Java可视化界面编程,Socket网络通信)

Android

  • 软件

Android: Android Studio

本地服务器搭建: XAMPP(Apache + MySQL)

服务器界面:Eclipse JavaEE

  • 实现思路

在电脑上利用 Apache + MySQL 搭建一个供服务端访问的数据库,有了数据库,就要写一个服务端在电脑上运行,读写数据库数据。开启一个线程一直检测是否有客户发送连接请求,有的话 accept,并且给这个连接的用户开一个单独线程供客户端进行通讯。而客户端发送请求给服务器,所以客户端要有一个 Action 来激活发送请求,也就是我们的点击滑动等事件。但是同时又要接受来自服务端的数据,所以我们要使客户端的 Action 操作和与服务端通讯分别用两个不同的线程管理。不知道我讲没讲请,下面用图来描述一下。

Part Two

实现目标

按照最先开始的计划,我们只实现一个静态的 ZZChat 界面,考验的就是 Android 控件的基本知识。如果碰到没见到过的控件可以去 Google 看开发文档。

实现过程

在看到实现的设计下,我们最先想到的是有四的Activity(欢迎界面,引导页,登录注册,主界面),同时对应四个布局

  • 修改MANIFEST

欢迎界面

引导界面只在首次开启时显示

引导页

引导页我们使用一个ViewPager实现,如果之前不熟悉的可以看我的另一个

利用ViewPager做的轮播图

http://fitzeng.org/2017/04/07/SlideShow

  • 布局

相信看了前面动图的效果对布局实现应该是有底了

  • 适配布局

到这了,如何实现 ViewPager 加载布局就是我们现在应该想的事了。

目前可以最先想到和做到的是实现三个加载的布局,为了方便我们只使用一个 ImageView来实现,同理其他三个页面也是类似,第三个多加一个 Enter 入口进入主页。

  • 适配器

现在的情况是有了布局和资源页面,怎么把资源页面加载进布局,这时就要用到 Adapter 了,也就是适配器。新建一个 adapter 资源包,新建一个 AdapterGuideViewPager类 继承 PagerAdapter

一定要注意 getCount() 和 isViewFromObject() 函数的实现。

有了适配器,只要给 adapter 添加之前的 guide 视图作为资源,再给 viewPager 设置资源适配器。基本效果就实现了。

  • 指示器实现

当前页面是第几页,要给用户一个比较明显的提示,可以利用两个不同颜色的小圆点。但是要想知道移动的改变就要实现监听事件。实现 onPageSelected() 方法就可以了。

登陆注册

  • 界面

这里可以自己设计,我使用 TabHost 实现,学习使用不同控件,不过布局值得主页的是ID的设置,自己可以试试如果不这样会出现什么效果。

  • 跳转

目前还没进行数据处理,所以我们直接跳转进入界面

  • 添加依赖库

如果你遇到上面的bug,说明到现在我们的TabHost是无法工作的,因为缺少一个依赖库。

compile ‘com.android.support:design:2x.x.x’

添加方式是在File->Project Structure 在弹出的窗口中选择app,之后操作看图:

此时需要重新 Gradle, 这时可能一个错误在 build.gradle。按 Alt + Enter, 选择忽略就好。

主界面

之前的页面基本实现,那么主界面如何实现,参考QQ,为了避免控件上的使用难度,我们直接用google提供的 DrawerLayout

写代码之前先理清思路,这个主界面明显是包含三个页面加一个侧换页面,也就是四个。
新建一个view资源文件,创建四个视图类。接着新建四个布局供类加载

  • 布局

这个布局有要主页的地方。侧滑视图要设置android:layout_gravity=”start” 属性。DrawerLayout 最好为根容器,推荐如下布局:

最外层就是 DrawerLayout,中间只有一个主内容和一个侧滑布局。你要添加的内容全部在主内容中实现。

这里采用 ViewPager + TabLayout 来实现,不熟悉的看这里:

http://fitzeng.org/2017/04/07/TabLayout

  • 加载页面

以 Chats 为例:

十分简单,看代码就能懂

之前已经使用了侧滑视图,接下来的三个视图分别对应加载进了三个类。如何将这些视图加载进主界面,前面已经说过如何加载 viewPager 了,这里也是一样的。实现一个适配器。

到这里基本的效果实现了,不清楚了可以参考阶段性源码。

最后

由于篇幅限制,这里只发布了前两部分(之后还有重要的网络部分),完整的项目笔记,大家可以点击最后 阅读原文 或者 访问作者的博客地址查看。

github地址:

https://github.com/mk43/ZZChat

更多

每天学习累了,看些搞笑的段子放松一下吧。关注最具娱乐精神的公众号,每天都有好心情。

如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿,投稿具体细节请在公众号主页点击“投稿”菜单查看。

欢迎长按下图 -> 识别图中二维码或者扫一扫关注我的公众号:

实现一个类似QQ的社交聊天工具相关推荐

  1. MVC实现类似QQ的网页聊天功能-ajax(下)

    此篇文章主要是对MVC实现类似QQ的网页聊天功能(上)的部分代码的解释. 首先说一下显示框的滚动条置底的问题: 结构很简单一个大的div(高度一定.overflow:auto)包含着两个小的div第一 ...

  2. java 气泡聊天消息_Html,CSS 实现类似QQ的气泡聊天

    下面是效果图: 下面说下关键地方的样式设置,然后贴出html和css代码(不多). 步骤1:布局 消息采用div+float布局,每条消息用一个DIV标签包裹,里面再放两个DIV分别用来包裹用户图标和 ...

  3. c#仿照类似qq的通信聊天程序

    2019独角兽企业重金招聘Python工程师标准>>> 即时通信系统开发 在我们的生活中经常使用即时通信的软件,我们经常接触到的有:QQ.阿里旺旺.MSN等等.这些都是属于即时通信( ...

  4. android 仿qq聊天背景,Android,_安卓实现类似QQ刚换聊天背景的功能,Android - phpStudy...

    安卓实现类似QQ刚换聊天背景的功能 自己实现了一下,但对于一些手机一设置背景就出现闪退不知道为什么,大体思路就是获得用户选择的uri,然后如果屏幕分辨率小于图片的分辨率就对图片进行下处理,防止OOM. ...

  5. 零基础快速打造一个属于自己的微信聊天工具

    " 零基础快速打造一个属于自己的微信聊天工具" 打开微信,我们可以和别人进行聊天,发送消息.非常方便,那微信是怎么来的呢​?这个本质的问题让人突发奇想,我们能不能做一个属于自己的微 ...

  6. android仿qq强制下线服务器,qq强制下线(实现一个类似QQ的强制下线功能)

    qq强制下线(实现一个类似QQ的强制下线功能),哪吒游戏网给大家带来详细的qq强制下线(实现一个类似QQ的强制下线功能)介绍,大家可以阅读一下,希望这篇qq强制下线(实现一个类似QQ的强制下线功能)可 ...

  7. php仿qq群聊,用Python写一个类似qq群聊的聊天室

    用Python写一个聊天室 功能 : 类似qq群聊 1. 进入聊天室需要输入姓名,姓名不能重复 2. 有人进入聊天室会向其他人发送通知 xxx 进入了聊天室 3. 一个人发消息,其他人会收到消息 xx ...

  8. Ubuntu中类似QQ截图的截图工具并实现鼠标右键菜单截图

    文章目录 简介: 安装: 设置快捷键: 实现鼠标右键菜单截图: 简介: 在Windows中用惯了强大易用的QQ截图,会不习惯Ubuntu中的截图工具. 软件名为火焰截图,功能类似QQ截图,可以设置快捷 ...

  9. python学习笔记(二十九)网络通信之模仿qq的在线聊天工具

    基于之前学习过的进程与线程的知识以及网络通信tcp与udp的原理,可以编写一个模仿qq的小程序 一.操作界面:(比较简陋,可以根据自己的要求来更改样式) 1.服务器界面: 2.客户端界面 3.首先启动 ...

最新文章

  1. python简单代码画皮卡丘-实现童年宝可梦,教你用Python画一只属于自己的皮卡丘...
  2. cygwin是一个在windows平台上运行的unix模拟环境,下载与安装
  3. 有序数组求中位数问题
  4. NSLog中格式符列表
  5. 江湖召集:.NET开发者们看过来,这场长沙的开发者技术大会正是为你精心准备的大餐...
  6. 在家“隔离”这1个月,阿里云视频云这些工程师都经历了什么?
  7. 量子通信入门相关书籍
  8. 西安python_西安找工作|西安人才网|西安全职招聘信息-西安58同城
  9. 只会java_只会码代码的你和Java工程师之间的差距有大?
  10. LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏的解决方案
  11. 20141214--C#父类,子类
  12. Allegro 制作 package
  13. 删库跑路 php,程序员删库跑路事件,php中文网的几点声明!
  14. Ubuntu获取最高权限(su)的方式
  15. 关键20小时,快速学会任何技能
  16. 对象的copy和自动归档Archive操作
  17. sencha list
  18. 视频截取并提取成音频
  19. React类式组件基础内容补充
  20. matlab用jc法计算可靠度,基于MATLAB的截尾分布下JC法计算可靠度

热门文章

  1. 黑客入侵网络的50种方法
  2. 后台拿shell全集
  3. 数据库恢复时的四种转储方法
  4. 诺基亚手机软件设计大赛
  5. linux 提取文件出错,pacman 错误:无法从 ××××获取文件 'core.db'
  6. 转码(BIN→ASCII/BIN→BCD)
  7. 金富瑞UCML2.0应用框架平台 for Asp.Net WEB 开发平台
  8. Cookie怎么设置了不生效
  9. remote: Support for password authentication was removed on August 13, 2021
  10. iOS内存管理和malloc源码解读