java 注册探探账号_零基础手把手教你开发探探类社交软件Tinder

news/2024/11/30 15:48:35/

原标题:零基础手把手教你开发探探类社交软件Tinder

目录介绍

1.关于项目App整体架构

1.1项目整体架构

1.1.1 目前项目使用架构

1.1.2 目前常见的架构

1.1.3 MVP架构优点及缺点

1.2.主要的技术要点

1.2.1 布局常用及技巧技术

1.2.2 复杂页面展示及数据渲染

1.2.3 自定义控件编写及使用

1.2.4 数据结构及网络数据使用

1.2.5 常见业务流程处理

1.2.6 工具自定义封装使用

1.3 主要开源框架介绍

1.3.1 网络请求框架

1.3.2 注解框架

1.3.3 图片加载框架

1.3.4 api 23以后权限申请

1.3.5 事件总线框架

2 .项目中的代码规范

2.1 关于包名,类名,方法名等命名

2.1.1 包名与分包

2.2.1 日志统开关,平时测试环境,上线关闭

2.3 资源文件string,color,dimen

3.项目中的总结分析

3.1 总结

4.常见问题思索

4.1 业务代码避免耦合度过高

4.2 如何解决问题

4.3 尽量少写无用代码

1.关于项目架构

1.1 该项目App整体架构

1.1.1 目前项目使用的架构

准备使用架构是MVP,Rxjava+Retrofit+OkHttp是网络请求框架,MVP是由MVC的基础演化而来,解决了MVC不少的缺点,相对MVC来说MVP提升解耦更好,业务分层清晰等特点,而以往MVC是把activity、fragment作为的controller和view使用,MVP的model相对于MVC是一样的,而activity和fragment不再是controller层,而是纯粹的view层,所有相关业务操作全部交由presenter层处理,这样做到一个相对的分离。

1.1.2 市面常见的架构

目前存在常见架构有MVC,MVP,MVVM等,

1.1.3 MVP架构优点及缺点

MVP框架由3部分组成:View负责显示,Presenter负责逻辑处理,Model提供数据。

View:负责绘制UI元素、与用户进行交互(在Android中体现为Activity或者fragment)

Model:负责存储、检索、操纵数据

Presenter:作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。

View interface:需要View实现的接口,View通过View interface与Presenter进行交互

优点:(1)MVP相对于MVC来说降低了耦合 为什么这么说呢?MVC中我们把业务数据交织在一起,也就是activity或fragment中,那么我们后期需要去修改需求的时候会引发修改难度大改一处而动全身,所以工程量会比较大总结下来就是(降低耦合),

(2)业务模块相对来说比较清晰,以往我们很 多业务交织在一起,所以比较模糊不太容易分辨我们具体业务,MVP能很容易看出我们的业务分层,也为我们开发后期维护有很大帮助,总结下来就是(模块划分清晰)

(3) 很多时候我们的业务模块相似,那么这个时候我们是不是想到一点就是代码复用。少写一部分代码可以提高开发效率,然而MVC就解耦性比较差,就大大减少代码复用,开发的灵活性比较差,总结就是(代码复用及灵活性高)

这些呢是个人对于MVP的一些观点当然还有其他的,这几点相对来说比较突出所以你们也可以继续探索。

缺点:(1)那么说了这么多优点我们来看看缺点,我们Persenter和View交互我们需要通过接口实现,那么各个业务不同会造成接口过多,加上我们的Model 那么代码中会相对比较繁琐,这样会使项目体积变大,后期也会有麻烦,总结下来就是(接口多项目体积变大)。

(2) View和Persenter 会频繁的交互那么如果我们的View发生变化时相应Persenter也要做出改变(交互频繁)

1.2 主要的技术要点

1.2.1 布局常用及技巧技术

布局中主要的一点就是尽量的层级嵌套不要过于复杂,因为渲染时一层一层往下渲染所以层级过于复杂的话那么耗时相对比较长,根据设计图的布局选择相对比较合适的布局方式,依然可以使用android最新的约束布局实现一个层级布局,这当中会涉及到约束布局使用,包括居中,向上,下,左,右,平分布局等,具体可以参考链接地址:study.163.com/course/intr…

1.2.2 复杂页面展示及数据渲染

对于复杂页面,我们选择是自带控件RecyclerVIew 支持扩展性强,功能强大 ,所以我们可以用它的多类型扩展特性完成我们的复杂布局,同时一个控件展示渲染也为后期业务变化修改提供便利性,具体可以参考链接地址:study.163.com/course/intr…

1.2.3 自定义控件编写及使用

通常项目中控件不能满足我们平时开发,那么这时候我们需要自定义一些控件来满足我们开发,自定义相对比较复杂,要求掌握知识比较全面一些,我们可以根据自己的需求来定义控件

这次我们自定义中涉及到事件分发,动画,自定义流程,事件回调等,具体可以参考链接地址:study.163.com/course/intr…

1.2.4 数据结构及网络数据使用

数据是我们开发中相对比较重要的一个知识点,我们View需要数据来渲染才会使我们的视图有生命,完成我们的页面逻辑及业务,项目中我们提供了真实企业级的项目接口也封装了网络 请求工具,具体可以参考链接地址:study.163.com/course/intr…

1.2.5 常见业务流程处理

项目的最终目的都是我们为了实现我们的业务,项目中要根据产品提供的文档来对业务做一些具体的操作,我在项目做了企业级的项目业务处理,虽然不是同一个项目但是万变不离其中

处理方式无非就是我们的流程控制及回调处理,具体可以参考链接地址:study.163.com/course/intr…

1.2.6 工具自定义封装使用

对于项目中我们需要用到一些方法,那么如果很多地方都用到那么写一次,这样会代码会比较繁琐, 可以把这些方法写成我们公用类静态方法以提供给其他地方调用,比如我们的时间格式化,获取手机参数,转化单位,获取屏幕宽度,高度,像素密度等,具体可以参考链接地址:study.163.com/course/intr…

1.3 主要开源框架介绍

1.3.1 网络请求框架

Retrofit: 底层基于OkHttp 实现,Retrofit 负责请求的数据和请求的结果,使用接口的方式呈现,OkHttp 负责请求的过 程,RxJava 负责异步,各种线程之间的切换

OkHttp: 也是Square 开源的网络请求库

RxJava:RxJava 一个在 Java VM 上使 用可观测的序列来组成异步的、基于事件的程序的库,总之就是让异步操作变得非常简单。

RxJava + Retrofit + okHttp 已成为当前Android 网络请求较优的选择。

1.3.2 注解框架

目前常见的注解框架:

XUtils:xutils是通过反射来实现的,跟Butterknife的是它需要手动实现注解

AndroidAnnotations:该框架的原理跟Butterknife一样

ButterKnife:自动生成注解与类属性,Butterknife目前支持的注解有: View绑定,资源绑定,事件绑定。

1.3.3 图片加载框架

ImageLoader:异步加载本地及网络图片,同时实现缓存

Picasso:不仅实现了异步加载图片,还是决解了图片加载的一些问题,错位,压缩,自带二级缓存等

Glide:Glide具有高效 获取、解码和展示视频剧照、图片、动画等功能。

1.3.4 api 23以后权限申请

权限管理,直接使用谷歌原生权限框架

1.3.5 事件总线框架

activity,fragment,service等不同组件直接通信一直是个头疼的问题,那么我们使用事件总线来进行通信

EventBus:EventBus逻辑非常的清晰,代码之间高度解耦,在进行组件、页面间通信的时候,是很好的选择,

具体使用方法可以参考地址:github.com/greenrobot/…

2 .项目中的代码规范

2.1 关于包名,类名,方法名等命名规则

2.1.1 包名与分包规则

包名:com.xxxx.project 例如:com.ousang.tinder 其中xxxx是咱们企业名称,最后是项目名称

分包如下图:

42fdf47c471ab86dac3452a81b3ddb06.png

2.2.1 环境统一开关,平时测试环境,上线关闭

在我们的管理类中设置一个方法控制我们的环境,平时测试时使用测试环境,上线时更改为上线环境

2.3 资源文件string,color,dimen

(1)对于项目中的字符串我们统一写入到清单文件string中以规范化,后期更改只需找到清单文件更改即可

(2)因为设计颜色相对会比较繁多,所以项目中的颜色值我们统一写入到清单文件color中以规范化,后期更改只需找到清单文件更改即可

(3)同样尺寸我们统一写入到清单文件dimen中以规范化,后期更改只需找到清单文件更改即可

3.项目中的总结分析

3.1 总结及收获

(1)项目中存在问题时要多思考问题原因,因为这样才能收获,不要盲目搜索,带着问题关键去寻找。

(2)完结项目后要回头去看代码是否可以更完美,尝试优化。

(3)和他人分享,每个人的想法有可能是一种收获

4.常见问题思索

4.1 业务代码避免耦合度过高

平时开发时尽量避免项目的耦合度过高,Persenter与View尽量做到耦合低, 避免日后的维护修改麻烦增加工作量。

4.2 如何解决问题

开发时会遇到很多的问题,那么我们可以借助搜索引擎的寻找答案,但是你要能看问题的核心,报错时我们需要看我们日志然后找到问题所在倒推问题发生源,如果是业务出错时回头去仔细查看文档分析,检查代码然后调试断点查处问题,总之就是不要慌,镇定。

4.3 尽量少写无用代码

我们布局,业务代码,工具,能抽取出来成为一个公用的时,就抽取,就公用,因为这部分相同代码实际上没有意义,到还繁琐,浪费时间或者都可以放进一个公用的包内。

阅读原文”查看。

完整源码。

视频地址:

http://www.apkbus.com/plugin.php?id=cxy_dev_course

https://study.163.com/course/introduction/1209487867.htm返回搜狐,查看更多

责任编辑:


http://www.ppmy.cn/news/691809.html

相关文章

探探提醒对方账号异常_我告诉你探探中对方账号异常怎么回事

探探对方账号异常有多种原因,可能是账号被封禁,可能是注销了账号。探探被封有多种原因,比如发布广告信息、发布色情暴力内容、恶意骚扰其他用户,探探注销账号也很简单,在探探3.7.5版本中,打开软件&#xff…

React 搭建DvaJS开发环境

那么 后面我们就开始将DvaJS了 他是一个特别优秀的React轻量级应用框架 他的使用了非常大 很多公司也都有在应用 他是 redux 和 redux-saga 的解决方案 可以简化操作 还内置了react-router 路由 和 fetch 网络请求 首先 它的学习并不困难 因为 Api本身其实比较少 他对于redux…

5.8.3 TCP连接管理(一)TCP连接建立

5.8.3 TCP连接管理(一)TCP连接建立 我们知道TCP是面向连接的传输协议,在传输连接的建立和释放是每一次面向连接通信必不可少的过程,因此传输连接的管理使得传输连接的建立和释放的过程都能够正常的进行。 一、使用Wireshark查看…

双击启动PS软件界面不显示、PS无法打开,解决方法

最近碰到这个情况,因为有些朋友,安装好的软件,用了几天好好的,突然,打不开解决方法,是修复dll,因为一些dll破损,要修复。网上都看到一些方法,看了很多是 什么兼容问题&am…

Adobe photoshop cc 打不开图片

Adobe photoshop cc启动后,新建命令不能用,背景黑色的解决方法。 打不开图片 解决方法: 1、编辑——>首先项——>常规选项卡,只勾选【使用旧版“新建文档”界面】。 2、关闭ps 2017 cc。 3、重新启动ps 2017 cc。 经过测试…

PS打不开webp格式图片的解决方法

webp格式介绍: webp格式是谷歌官方推出的一款图片格式,具有出色的压缩率,相比jpg格式小很多,所以网页浏览的速度很更快。webp文件可以使用ACDSee打开或者通过chrome浏览器打开,也可以将webp格式转化成其他格式打开 P…

ps性能打不开的解决方法

可以试一试这个方法 1、我们需要用到注册表编辑器,所以先右键开始菜单,打开“运行”,输入“Regedit”,打开“注册表编辑器”。 2、依次打开“HKEY_CURRENT_USER\Software\Adobe\Photoshop\120.0”,我们只需要在里面新建…

遇到一张jpg的图片打不开,ps打不开,fireworks,打不开,ie8浏览器上显示不了,其他的浏览器没问题...

1.在photoshop上报错; 2.在fireworks上报错 3.ie8上 其他的图片都可以,就这张不可以,没发现什么不同的地方,都是jpg格式的呀,而且谷歌浏览器能显示出来; 处理方法: 1.选中图片,右键选打开方式;选windows自带的画图工具打开这是(win7); 2.然后另存为,就可以用了, 至于格式,随意;…