FBReader源码详细分析 序言

本文详细分析了FBReader源码,从主线程与子线程的管理到epub文件的处理,再到显示流程与样式处理等内容,为读者提供了一条清晰的学习路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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文件内部组成
    本章介绍了epub文件内部的组成,以及内部各个部分各自的作用。 
第五章:epub文件处理 -- 解压epub文件
    本章介绍了程序是如何将epub文件内部指定的文件解压成可以解析的字节流。 
    本章涉及的核心类是ZLZipEntryFile类、LocalFileHeader类、ZipInputStream类、DeflatingDecompressor类 
第六章、epub文件处理 -- 解析container文件与.opf文件
    本章介绍了程序解析container文件与.opf文件的详细流程 
    本章涉及的核心类是涉及xml文件解析流程的ZMLZMLProcessor类、ZLXMLParser类、ZLXMLReader类以及与涉及解压流程的ZLZipEntryFile类、LocalFileHeader类 
第七章:epub文件处理 -- 解析.xhtml文件
    本章介绍了程序如何利用ZLTextPlainModel类分别来处理.xhtml文件中的文本信息与标签信息 
    本章涉及的核心类是ZLTextPlainModel类、ZLTextWritablePlainModel类、CachedCharStorage类、XHTMLTagParagraphAction类 
第八章:epub文件处理 -- 定位指定段落
    本章将介绍在CachedCharStorage类中的char数组定位指定段落的详细流程 
    本章涉及的核心类是Processor类、EntryIteratorImpl类 
第九章:epub文件处理 -- 显示.xhtml文件
本章中将介绍将经过“解析”与“定位”流程之后得到的数据显示到屏幕上的详细流程 
本章涉及的核心方法是:ZLTextView类中的preparePaintInfo方法、prepareTextLine方法、drawTextLine方法 
第十章:epub文件处理 -- 样式处理
    本章中将介绍处理样式的流程。样式处理的流程包含两个部分:创建样式、应用样式。 
    本章涉及的核心方法是TextStyleReader类中的startElementHandler方法以及ZLTextViewBase类中的resetTextStyle方法与applyControl方法 
十一章:翻页处理
待完成 
十一章:批注处理
待完成 
十二章:目录跳转
待完成 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值