前几天晚上,百度移动端搜索发生故障,搜索请求无法显示结果,经历了42分钟后故障解决。据估计,故障期间有上亿次的手机搜索受到影响。就在近日,工信部紧急约谈了百度公司,并责令立即针对此次事故深入调查,3日内向工信部提交书面报告。有趣的是,阿里和腾讯也因为躺枪,工信部下发了紧急通知,要求阿里和腾讯吸取百度的教训,并且要会举一反三。 漫长的一周终于结束了,先提前祝大家周末愉快! 本周的最后一篇文章来自黎赵太郎 的投稿,分享了个人开发一款APP并上架的经验。由于篇幅**,我这里只挑出了文章的主要部分,感兴趣的朋友可以访问下面的博客地址查看全部内容。 黎赵太郎 的博客地址:
目标:实现纸飞机App - 采用MVP架构,集合了知乎日报、果壳精选和豆瓣一刻的综合性阅读客户端。项目地址:
效果图如下所示: 本次教程分为7天,内容分别为: 第一天,准备
第二天,UI
第三天,整体架构 第四天,首页列表
第五天,详情页与其他
第六天,高级功能
第七天,发布与开源
好了,废话不多说了。现在就开始吧。
俗话说,万事开头难,准备工作做好了,可以起到事半功倍的作用。磨刀不误砍柴工嘛。 功能需求 在开始正式编码之前,咱们还是得先把要实现的功能一一列出来,后面实现起来才有方向嘛。我认为咱们需要实现的功能有:
一共6个大的需求,不多,但是我们仔细的研究一下,实际上这6个需求涉及到了网络,UI,数据存储,后台服务等内容。相信对于聪明的你不算困难,现在我们来研究一下可行性。 可行性分析 我们首先需要考虑的问题就是:数据从哪里来?感谢开源,GitHub上izzyleung大神分析了知乎日报的API并开源了,项目地址请戳这里:
分析的非常详细,纸飞机项目在初期,也就是版本3.0之前也只使用了这一个API,在3.0之后还使用果壳精选和豆瓣一刻的API。如果你还想要展示更多的内容,可以戳这里(收集了一些国内外常用的API):
我们来粗略的看一下数据的内容。获取知乎日报2017年1月22日的消息列表: http://news-at.zhihu.com/api/4/news/before/20170122
服务器向我们返回JSON格式的内容: OK,获取到了列表之后,我们就可以获取详细的内容了,例如,我们获取id为9165434的内容,只需要将id拼接到http://news-at.zhihu.com/api/4/news/之后: http://news-at.zhihu.com/api/4/news/9165434
获取到的内容为: body字段中就是html格式的内容详情,我们就可以使用 WebView 来展示了。当然,知乎日报的API接口不止上面的两个,你可以点击上面的链接查看。获取果壳精选和豆瓣一刻的内容,你可以在我的项目中直接查看文件Api。 其他准备 工欲善其事,必先利其器。工具准备好总是没错的。其他不多说,推荐一款功能强大的网页调试与发送网页 HTTP请求 的Chrome插件,我们做网络请求分析时需要用到:
好了,第一天的工作差不多就是这么多,熟悉一下API,把工具备好,收拾一下心情,准备明天的工作。
今天主要完成的是UI设计。你可能会问了,这不是设计师的工作么。然而,我在开发纸飞机的过程中,并没有射鸡湿这种生物,UI就我自己完成了。相信大多数的程序员,美术方面应该不是那么地擅长。 当然,有美术和相关基础的同学可以试试用Sketch或者PS把原型图画出来,对于没有美术基础的童鞋,最简单的方法当然就是模仿现成的APP了。当然,你也可以在下列网站寻找合适的设计图:
另外,还有一些小的注意事项: 1. 遵守Material Design设计规范- 这不是强制性的要求,但是,既然我们是开发一款Android App,如果我们自己都不遵守规范,还怎么指望Android环境变好呢。 2. 正确使用BottomNavigation- BottomNavigation 作为 Google 的打脸之作,诞生之初就倍受争议。我个人的建议是使用 TabLayout 代替底部导航,这是涉及到信仰的大事情。如果一定要用,请不要把iOS上的标准直接放在Android上使用,请参考这一篇文章:
并且,我向你投来一个鄙视的眼神。 3. 使用正确的图标 - 尽量使用https://material.io/icons网站上的图标,如果你使用iOS版本的图标,我再次向你投来一个鄙视的眼神。 首页使用 Drawer 作为**导航,Tab 为二级导航,列表项使用卡牌布局,使用 FloatingActionButton 作为日期选择按钮;详情页面使用可收缩的 **,图片搭配文字的形式。其他高深的我也不懂了。到后面你会发现,这里我犯了一个错误,卡牌布局用在这里是不合适的。参见:
现在开始就要真正的写代码了。新建Android Studio项目什么的就不说了,下面的是我的项目结构图: 不难看出,我是按照页面和功能进行分包的。 包建立完成后,我们开始导入第三方的开源库,便于简化代码的编写和实现特定的效果。找到工程目录下app文件夹,打开build.gradle文件,添加如下内容。 由于一些历史遗留问题,我并没有使用 OkHttp 作为网络请求包,而是选择了 volley。如果你有一定的基础,可以选择使用 OkHttp。 导入volley有两种方式: 1. 在app目录 下的lib目录 下粘贴volley的jar包,你可以在这里下载到:
2. 当然也可以通过 gradle 引入: compile 'com.android.volley:volley:1.0.0'
首先是整体的架构:MVP。关于整体架构的选择以及更加详细的介绍部分,可以戳这篇文章:
|
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|