项目地址:https://github.com/razerdp/FriendCircle
上篇链接:http://www.jianshu.com/p/68e13214cde4
下篇链接:http://www.jianshu.com/p/dc5782a494b5
首先,我们可以肯定的是,朋友圈拉取信息肯定是请求(废话)。
那么请求的数据格式普遍使用的就是xml或者JSON,虽然xml结构清晰有序,但JSON因为其方便,不需要前后端事先沟通好各种解析规则的原因,所以理论上来说一般请求都是使用JSON格式来传输数据的,况且xml解析要么标签索引要么节点遍历,无形中增加了许多压力而且更为复杂,所以选择JSON无可厚非。
那么开工之前我们先分析一下目前朋友圈拥有的类型,以及我们现在可以做的和不可以做的东西,然后初步确定一下JSON格式。然后在下篇我们将会按照这个格式进行JSON数据模拟。
开工之前,作为一枚“面向搜索引擎”编程的开发员,我们当然得谷歌一下。经过一轮谷歌后,我们顺利找到百度百科←_←(果然还是本土化重要啊)
结合百度百科信息和我们平时使用的印象,朋友圈目前有着以下几类的动态以及我们本次撸朋友圈要做的东西**(目前来说,因为没有后端支持,所以我们暂时在本地模拟各种操作【图片上传先不做,在这个项目中仅作展示用】,以后有机会再弄后续的)**: - 纯文字**【做他喵的】** + 纯文字动态应该是最为简单的,就是一段文字嘛←_←- 图文混编**【做他喵的】**
- 不带文字的图文:
- 单独一张图(x==1)【单张图片不固定大小,只有上限】
- 大于一张图但小于等于三张图(x>1 && x<=3)【x张正方形imageview一字排开】
- 四张图(x==4)【4张正方形imageview分两列呈“田字”】
- 大于四张图但小于等于9张图(x>4 && x<=9)【x张正方形imageview结合gridview】
- 不带文字的图文:
- 带文字的图文:
- 同上。。。
-
小视频**【我认怂,本地没法模拟】**
- 带文字
- 不带文字
-
网页链接**【无法实现真正的分享,因为没有服务器,点击直接跳原生webview,精力有限,不针对改造】**
- 普通网页(有/无缩略图)
- 带文字
- 不带文字
- 普通网页(有/无缩略图)
-
广告(官方推送的)【忽略】
总结起来大概就是上面的五大类吧,除了广告和纯文字外,都有带文字和不带文字的区别。
分好类后,我们接下来看看这些数据共有的属性和非共有的属性,以便我们定义我们的JSON结构:
首先直接上一张图,来自百度:
这张图基本代表了朋友圈目前的主流:图文混编,那我们分析一下共有的数据:
图中红框部分就是无论什么动态都会有的属性:- 用户头像
- 用户名字
- 发布时间
- 心情文字(没有文字的时候不展示,但每个动态都会预留这个控件位置)
- 点赞展示(没有点赞的时候不展示,但每个动态都会预留这个控件位置)
- 评论列表(没有评论的时候不展示,但每个动态都会预留这个控件位置)
而非共有属性其实只有一个:就是红框外的内容,这里的内容就是可变的,要么就是小视频,要么就是n张图(n<=9 && n>0),要么就是没有图(纯文字),要么就是网页链接或者音乐,广告我们忽略。。。
初步确定后,我们的结构其实十分清晰了,具体可以参考一下这张思维导图: (初步设计,可能会更改)
下一篇,针对该结构图进行模拟JSON数据并优化。