想了很久,还是决定把我最近的项目的源码发出来,有兴趣的可以共享,学习,交流。希望尊重作者,转载,商用请遵循本人。
  APP本地小说仅支持txt格式,将小说按章节分割存入数据库,在线小说来源是通过手机模拟小说网站的GET请求,获取网站源码,根据不同网站来源进行数据解析,获取相应数据存入数据库显示(已经匹配了近30个网站),同时为了提升阅读体验,章节内容做了二级缓存处理。同时也增加了离线加载功能。
  
  这款APP,主打精简,UI精简但不失优雅,功能精简但不失体验,根据功能界面划分为:

  1. 书架模块:包含本地书籍,以及网络在线书籍。
  2. 书城:以一个网站为数据来源,解析其主页数据,筛选以及封装数据以Android原生界面的形式展现出来。
  3. 网络小说离线功能:通过提前设置任务队列,通过Service后台获取章节数据。
  4. 本地小说:将手机本地的txt小说导入应用。
  5. 小说阅读模块。
      本APP所有数据来源于第三方小说网站,不具备自身后台,通过JSoup对xml进行数据解析,来完成用户对小说内容的获取。

开发难点

本地超大txt小说数据处理

我们都知道手机直接读取超大文本时,不做好优化是很可能OOM的。我对本地小说的处理方式是
  
  可查看ImportBookModelImpl类。

小说阅读模块

由于最初是以自身阅读习惯开发,所以只有左右翻页阅读功能,我并没有直接使用自定义View去完整整体UI,虽然定义View会使得UI更自由,但是我认为通过自定义的ViewGroup去加载布局反而开发成本相对很低。
  在自定义ViewGroup中,最多只有3个页面,分别是当前页,上一页,下一页。当滑动到下一页时,上一页移除,当前页指向下一页,同时再新增下一页。保证UI布局数量不会越来越多,杜绝因为View过多而产生的OOM。
  同时阅读时,章节内容数据优先从内存读取,随后是数据库,都没有的话,再通过章节的网络地址去请求新的章节再解析最后返回数据,存入缓存以及数据库中。
##顺便推荐下自己的开源库吧
顺便介绍下自己的两个UI库把
进度条:https://github.com/ZhangQinhao/MProgressBar
沉浸式布局:https://github.com/ZhangQinhao/ImmerseLayout
适用于RecyclerView以及ScrollView的上下拉刷新控件最近也会找时间从项目中摘取出来
MVPlib:https://github.com/ZhangQinhao/BaseMvpLib 集成了rxjava+retrofit+rxbus等一些快速开发的框架。

项目源码地址:https://github.com/ZhangQinhao/MONKOVEL 有任何问题和优化都可以联系我。

请勿商用,请勿copy代码打包上市场!!!仅仅提供学习,个人已经不维护了,其中解析方式可以直接用XPath语法去弄,会更加灵活
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐