https://github.com/geometer/FBReaderJ
FBReader源码详细分析 -- 序言
有关FBReader源码的分析,网络上已经有一位叫做“谋哥”的大神写过(大家可以到这个地址里面去下载相关的PDF文件)。我的这篇分析是在“谋哥”分析的基础上,以FBReader的启动流程为主线,对源码的细节处进行了更加详细的分析
按照我的设想,把我觉得把FBReader源码中有必要详细分析的部分全部都写完的话,大约会有二十章左右,还是一个挺大的工程。我会不断更新序言的部分,把已经完成的章节的概要都在这里列出来,以便大家在阅读每个章节之前可以对整个分析的流程有一个大致的了解。
本章介绍了程序如何在建立了一个负责在后台读取epub文件的子线程后,再用主线程控制一个进度条(ProgressBar)在屏幕上显示与消失。
本章涉及的核心类是UIUtil类。
本章介绍了程序图和对assets文件夹下存储的资源文件进行解析,得到要显示在进度条(ProgressBar)上的文字。
本章涉及的核心类是三个读取xml文件的三个核心类ZMLZMLProcessor、ZLXMLParser、ZLXMLReader以及ZLTreeResource类
本章介绍了程序如何获取包括文件路径在内等的书籍信息,为解析书籍所在的epub的文件作准备。
本章涉及的核心类包括FBReaderApp类、SQLiteBooksDatabase类、Book类、BooksDatabase类、FileInfoSet类
本章介绍了epub文件内部的组成,以及内部各个部分各自的作用。
本章介绍了程序是如何将epub文件内部指定的文件解压成可以解析的字节流。
本章涉及的核心类是ZLZipEntryFile类、LocalFileHeader类、ZipInputStream类、DeflatingDecompressor类
本章介绍了程序解析container文件与.opf文件的详细流程
本章涉及的核心类是涉及xml文件解析流程的ZMLZMLProcessor类、ZLXMLParser类、ZLXMLReader类以及与涉及解压流程的ZLZipEntryFile类、LocalFileHeader类
本章介绍了程序如何利用ZLTextPlainModel类分别来处理.xhtml文件中的文本信息与标签信息
本章涉及的核心类是ZLTextPlainModel类、ZLTextWritablePlainModel类、CachedCharStorage类、XHTMLTagParagraphAction类
本章将介绍在CachedCharStorage类中的char数组定位指定段落的详细流程
本章涉及的核心类是Processor类、EntryIteratorImpl类
本章中将介绍将经过“解析”与“定位”流程之后得到的数据显示到屏幕上的详细流程
本章涉及的核心方法是:ZLTextView类中的preparePaintInfo方法、prepareTextLine方法、drawTextLine方法
本章中将介绍处理样式的流程。样式处理的流程包含两个部分:创建样式、应用样式。
本章涉及的核心方法是TextStyleReader类中的startElementHandler方法以及ZLTextViewBase类中的resetTextStyle方法与applyControl方法
十一章:翻页处理
待完成
十一章:批注处理
待完成
十二章:目录跳转
待完成