今年暑假,Android大概学了两个月左右,很想做一款"能投入使用的App"。但是一没好的点子,二技术也不咋地,后来看到一个图灵机器人的接口,于是就花了一两天的时间写了一个"聊天机器人"发市场上了。显然,算不上什么"像样"的应用。开学后,随着对Android 的了解越来越深,想做出个“像样的App"的想法就愈发强烈。
9月底,小kd说想合作做我们学校的App。他负责后台,我负责客户端。一个人负责,身边没有有经验的人,心里也是没底的。后来断断续续折腾了几个礼拜,大概的框架倒也搭出来了,其中几个功能性的模块我单独拉出来开源了。在这款应用的开发中,深感Java语言底子不足 & 代码不够规范 ,于是在此期间又看了 Core Java 、大话设计模式、设计模式之禅、Thinking in Java 之类的书籍,收获很大。其实类似的书籍在之前也看过,但是书上讲的东西在平时很少用到,很难理解到其中的精妙之处。(在用中学,学以致用,这是我目前比较认同的学习方法) 10月下旬的时候,小kd离开原来实习的公司到了一家创业公司。还是实习(转正压力 前几天才拿到正式offer),工作比较忙后台的开发也就一直搁置了。我这边客户端的界面已经搭好了,后台没有提供数据接口我也不能继续下去了,然后就琢磨着下一个App.
这个时候基本的Android开发知识已经不是问题了,重要的是做什么。首先,我想这个App能够覆盖到常用的Android 相关知识,对综合能力要求不能太低,能够起到练手的作用。其次,做出来得有实际用途并且能够用,不能再像以前的toy program 一样了。确定这两点,我就去一些Android 群里问了,同时也咨询了一些学长,然而并没有得到比较满意的建议。(有点心塞啊) 没有好的点子做,总不能闲着。翻了下GitHub,之前fork了BlackLight(一个第三方微博客户端),下下来跑了下,貌似还不错的样子~_~ 里边的代码的层次结构也非常清晰,我尝试把整个工程的结构理了一边,受益匪浅。
11月初,在一个程序员社区看到有人分享了自己开发的一款应用。里边有新闻、视频、图片之类的模块,dang~ 就它了!当晚就各种查查查,初步写了App的大概结构:
定好这些就开始编码了,一步一步来。首先测试各个接口,在视频和音乐这里遇到点障碍。视频网站顶多是提供一个H5播放页面(或是swf 然而Android不支持),广告一堆,显然用户体验很差,还不如直接去下官方的客户端。音乐这块,版权问题,貌似没有看到公开的Api,有找到别人抓包搞到的---这不大好吧(~_~) 这两个模块就砍掉了。剩下三个都是阅读相关,干脆就当阅读类的应用去做了。又去搜接口(个人开发者,,尴尬啊,没有后台,只能依赖开放Api了...不管,练技术是关键===)——最后是加了一个知乎日报。接口测试完毕后,就进入正式编码过程了。之前没什么经验,代码复用这块做的不好,基本上是写几个模块就重构一次。总体上来说,这段还算顺利,接下来是做"数据持久化"(缓存哈)。这款是学习BlackLight,派上用场了,之前我用到数据库是直接使用第三方的库,SQL语句都不用写。不过这次直接操作SQlite也并没有觉得复杂,结构较为清晰得益于BlackLight。
基本数据展示完成后发现App存在内存泄露,很容易就奔溃掉,一个礼拜之后才把位置排查出来解决... 之前从没有遇到过这类问题,学习了。之后又添加了设置以及关于,给朋友测试,修bug,今天正式发布。由于我的App中包含新闻内容,一些市场不允许个人开发者发布新闻类应用,所以目前还只在豌豆荚上架。
应用介绍:
闲暇(Leisure)是一款集"知乎日报"、“果壳科学人”、“新华网新闻”以及“豆瓣图书”于一体的阅读类Android应用。 果壳、知乎和豆瓣在国内拥有大量用户,这些社区的用户每天都产生很多高质量内容。闲暇以其简介的风格将这几大社区 的优质内容整合于一体,使得用户能有效地获取这些内容,大大节省了用户的时间。
它主要分为以下几个模块:
1. 日报: 数据来源于知乎日报RSS,内容精选自知乎优质答案。
2. 阅读:接入豆瓣图书API,将图书进行分类展现并且支持搜索功能,部分图书还提供了电子书。
3. 新闻:数据来源于新华网RSS,第一时间获取最新资讯。其内容简洁真实权威,相对于国内一些娱乐化新闻平台,更加严肃务实。
4. 科学:接入果壳网API,果壳网作为一个开放、多元的泛科技兴趣社区,吸引了百万名有意思、爱知识、乐于分享的年轻人聚集在这里,用知识创造价值,为生活添加智趣。
5. 收藏:用户收藏内容,方便用户保存优质内容。
6. 个性化设置:
MainActivity: 入口界面。做一些初始化的工作,加载应用整体框架,负责基本子界面的切换。
BaseListFragment:列表界面基类。定制性强,可自定义是否启用头部导航布局 下拉刷新等组件
AsbtopNavigationFragment: 头部导航布局基类,继承它即可管理头部导航布局。
BaseAdapter: RecyclerView 的Adapter基类
-- BaseCache 主模块数据缓存基类
ICache--- 缓存接口
-- BaseCollectionCache 收藏模块缓存基类
2015-12-12 初版(1.0)完成
2015-12-24 Version 1.1 版发布
0.初版发布之后收到了很多朋友的反馈,在此表示感谢!
由于最近比较忙,在第一版中日报数据服务器不稳定等问题准备放在第三个版本中.
1.这版的更新主要是修复一个严重的bug:数据冗余,刷新后之前数据没有被清除,新老数据出现重复.下载更新版本后,手动刷新即可获取正确数据. 2.软件开发靠开发者一人之力是不够的,MummyDing希望各位也能参与进来,让"闲暇"越来越好!
3.Bug反馈即可在评论区留言,同时也可到项目主页发布issue:https://github.com/MummyDing/Leisure/issues
本项目为开源项目,技术交流可以通过邮箱联系:[email protected]
2016-01-03 Version 2.0 版发布
上次的更新比较失败,导致不少新bug.这次经过更严谨的测试,主要做了以下改进:
0. 日报数据更加可靠,响应速度明显提升,内容更加丰富.
1. 日报页面更加美观,体验更好
2. 修复列表缓存不全bug
3. 修复收藏bug
4. 各模块列表UI做了优化
5. 优化夜间模式
本次更新更侧重于修复之前的bug,UI上的美化将放在之后的版本中.
个人开发者业余开发,更新不及时请见谅,感谢支持.
项目地址: https://github.com/MummyDing/Leisure
应用截图:
项目中,几个重要类的简单介绍(文末附源码地址)
MainActivity: 入口界面。做一些初始化的工作,加载应用整体框架,负责基本子界面的切换。
BaseListFragment:列表界面基类。定制性强,可自定义是否启用头部导航布局 下拉刷新等组件
AsbtopNavigationFragment: 头部导航布局基类,继承它即可管理头部导航布局。
BaseAdapter: RecyclerView 的Adapter基类
--BaseCache 主模块数据缓存基类
ICache --- 缓存接口
--BaseCollectionCache 收藏模块缓存基类
当然,这个项目毕竟我写了这么久,没法详细说,具体得自己看源码了。
酷安应用市场下载地址:http://coolapk.com/apk/com.mummyding.app.leisure
小米应用商店下载地址: http://app.mi.com/detail/130045
豌豆荚应用市场下载地址: http://www.wandoujia.com/apps/com.mummyding.app.leisure
360应用市场下载地址:http://m.app.so.com/detail/index?pname=com.mummyding.app.leisure&id=3167599
【转载请注明出处】
GitHub项目地址: https://github.com/MummyDing/Leisure/ [开源项目,编码不易,觉得好的话给个star吧~_~]
出处: http://blog.csdn.net/mummyding/article/details/50266203