【原创】从头开始,使用安卓系统WebView做一个功能强大的Epub阅读器(四)

上一章传送:https://blog.csdn.net/mzy24511cs/article/details/80507257。

首先构建阅读器的父容器。用于加载每一章的WebView以及所有的工具View。重点模块如下:

一、章节列表的获取。通过解析NCX文件,拿到章节列表。这里我做的是离在线混合模式,每次都会检查离线缓存是否存在,若不存在会直接下载在线版然后再解析。这样做的好处就是省掉下载过程,用户可以直接打开阅读,边看边下。这里使用的Jsoup工具,代码如下:


二、章节资源的预加载与回收。之前说了为考虑内存效率需要实时动态的加载与回收章节。这里使用了Runnable接口来实现。基本思路为:设定一个加载范围,例如当前章上下最多加载2章,也就是最多加载5章。判断当前章节加载完成后,判断上一章、下一章是否需要加载。判断条件就是是否正在加载、长度是否足够、是否越界;回收也类似,设定一个回收范围,在每次切换章节后,判断最前面或最后面一章是否需要回收。往前翻回收后面,往后翻回收前面的。这样便可以实现后台一边加载一边回收了,并且还不会阻塞用户使用。代码如下:



三、与章节模块的交互。主要包括手势滑动、翻页,以及JS内容的交互,这里全部继承到一个接口里。函数特别多就不一一说明了,后面会分模块详细介绍。


四、相关的工具模块。包括背景音乐、底部工具栏(字号、背景、翻页模式、繁简体等)、目录和书签栏、页码和页眉、音频播放器、视频播放器、搜索栏、语音朗读、仿真翻页视图、收费控制等。

内容有点多,后面专门用一章详细说明吧。

猜你喜欢

转载自blog.csdn.net/mzy24511cs/article/details/80563448