Android开发Android开发经验谈Android技术知识

从零开始写一个抖音app——基本架构与MVPs

2018-08-06  本文已影响21人  何时夕

本文首发于简书——何时夕,搬运转载请注明出处,否则将追究版权责任。

大家好久不见,距离上次发博客已经三个星期过去了,很惭愧没有达到两周更一次的目标。但在中间的一周我还是收获挺大的,所以在文章的开始与大家分享两个问题。

一、程序员的打字速度与Vim

1.程序员是否应该有比较快的打字速度?

这一节,不感兴趣的同学可以跳过不看。这个问题是我某天逛知乎看见的,打字速度对编程的影响大吗?。我想就像哈姆雷特一样,每个人对这个问题的想法都不一样。

正方:程序员应该有比较快的打字速度

反方:程序员打字速度快不快没啥关系

我的话还是同意正方的观点的,所以我抛弃了使用多年的双手二指禅,花了一周的业余时间练习标准打字指法。现在大家看见的这篇文章就是用标准指法打出来的。速度的话这一周时间我的打字速度已经恢复到之前的水平了。指法练习,这个网站是我这周练习的网站。有兴趣的同学可以玩玩,我一直推崇的一句话是:人不能呆在舒适区中。这也是我下决定花时间改变我的指法的一个原因,大家也可以尝试改变一下,可能可以收获一些东西。

2.程序员是否应该去学习Vim

这个争论也已经很久了,我今天就说说我自己决定用时间去学习Vim的原因吧。

二、MyTikTok基本架构

这一节开始言归正传,在这一节中我会把整个app未来的moudle组成,以及配置结构讲一下。

1.项目

这是本项目的github地址:MyTikTok下面有很多代码实现都是项目中的实现,所以建议大家结合项目食用博客!另外项目求star、求fork!

2.项目结构

MyTikTok架构图.png

上面这个是项目的架构图,下面我们自底向上来讲解一下。

3.项目配置

gradle配置在大型项目中的使用一直是我不熟悉的,所以我学习了我司的一些配置方式,这一节就来讲一讲。

version.png

version.gradle这个文件用于储存所有用到的第三方sdk的名字与版本,这样一来其他moudule在使用三方sdk之后需要升级的时候就可以只改动version.gradle里面的版本就行了。

library.png

library.gradle这个文件用于把各个android library moudule中重复定义的东西放在一起,其他moudule只需要引入这个文件就行了

widget.png

widget.gradle文件就是widget模块的gradle文件,第一行就是引入library,gradle文件来解决重复的配置。下面几行则是引入在version.gradle里面定义的Rxjava这个库。

三、MVPs

1.MVPs概述

MVPs.png

上面是MVPs的架构图,接下来我会一个个进行解释

根据上面说的这些东西,一个Presenter接口就可以被设计出来了


presenter接口.png

当然项目中有一个实现了Presenter接口的基类,由于篇幅限制就不一一讲解了,有兴趣的同学可以去项目中找BasePresenter这个类来看看,有问题可以加我QQ进行交流。

2.如何为Presenter注入参数

我们在上一节中说到了Presenter中的参数都是由外部注入的,这一节我们来讲讲如何使用APT来自动生成代码,从而减少编写模板代码。

首先我先写一个在项目中写一个demo,当然现在这个demo是不可运行的,目前Presenter的整个流程还没走通,但是并不妨碍大家的理解。


MainActivity.png

3.为Presenter注入参数的原理

对于一个技术不知道原理是不行的,所以这一节就来讲讲为Presenter注入参数的原理

四、尾巴

这是从零开始写一个抖音app系列的第二篇博客,这几个星期在我司学到的东西很多。不仅仅是上面博客中写的这些项目架构的东西,这三个星期不断的学习音视频的核心代码也同样让我受益匪浅。未来当这些知识成体系之后一样会以博客的形式分享给大家,希望大家能持续关注这个系列的博客,也算对我的一个监督,嘿嘿!

往期博客

上一篇下一篇

猜你喜欢

热点阅读