FBReader源码详细分析 序言
2019独角兽企业重金招聘Python工程师标准>>>
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方法
转载于:https://my.oschina.net/u/938986/blog/335561
FBReader源码详细分析 序言相关推荐
- LinkedHashMap 源码详细分析(JDK1.8)
1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题.除此之外,Linke ...
- linkedhashmap 顺序_LinkedHashMap 源码详细分析(JDK1.8)
1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题.除此之外,Linke ...
- android view 源码分析,Android ViewPager源码详细分析
1.问题 由于Android Framework源码很庞大,所以读源码必须带着问题来读!没有问题,创造问题再来读!否则很容易迷失在无数的方法与属性之中,最后无功而返. 那么,关于ViewPager有什 ...
- HashMap 源码详细分析(JDK1.8)
1. 概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap.HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现.HashMap 允许 null 键和 null 值 ...
- vboot源码详细分析-1
最近一直在研究bootloader之vboot,vboot短小精悍,如果只是用来进行系统的引导,而不要提供其他复杂的功能时候,我认为这是绝佳的上选.这里以MINI2440开发板配套的源码进行分析.这个 ...
- DownloadProvider 源码详细分析
DownloadProvider 简介 DownloadProvider 是Android提供的DownloadManager的增强版,亮点是支持断点下载,提供了"开始下载",&q ...
- 一文读懂Spring动态配置多数据源---源码详细分析
Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 代云小说网 https://www.3187.info 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批 ...
- layui源码详细分析系列之富文本编辑器模块
所谓的富文本编辑器就是内嵌在浏览器上.所见即所得的文本编辑器,它的形式如下: layui框架中内置了layedit模块,该模块就是富文本编辑器模块,在最近两天中我自己使用原生js实现了简易的富文本编辑 ...
- HashMap 源码详细分析(JDK1.8) 1
1.概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap.HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现.HashMap 允许 null 键和 null 值, ...
最新文章
- ALDownloadManager 基于Alamofire封装的下载器
- java中四种引用类型(对象的强、软、弱和虚引用)
- 要速度更要方便!20款实用Chrome插件推荐
- HttpClient中的各种请求
- leetcode 646. Maximum Length of Pair Chain | 646. 最长数对链(暴力递归->傻缓存->dp)
- Linux 进程通信之FIFO
- 线性结构基本概念【数据结构】F
- WPF 正確理解ContentPresenter
- 双极结型三极管的结构、特性、参数
- axios 的简单使用
- 20200317_决策树预测贷款申请
- 第2讲 ZF2.4 最新框架搭建
- 摩拜单车微信小程序开发技术总结
- wineskin使用教程_使用Wineskin在Mac上运行Windows Apps /游戏
- 电子信息工程考研专业方向解读
- mac 打开网页慢_苹果笔记本打开网页很慢是什么原因
- 屏保:毛雷尔玫瑰屏保
- python爬wos数据库,用Python爬行WoS
- 阿里云服务器SSH远程连接与踩坑小记
- Hive环境搭建(保姆级教程)
热门文章
- 联想笔记本键盘亮屏幕不亮_联想笔记本电脑开机键亮但是黑屏 联想笔记本电脑键盘失灵怎么办...
- win10系统的计算机C盘在哪,win10系统只有一个C盘怎么解决
- Oracle基本函数-大小写转换函数
- docker mysql5.7 设置不区分大小写
- 【spring】spring异步执行的使用与源码分析
- 从零开始学C++之标准库类型(一):string 类简介和例程
- 工业相机 镜头 焦距 视野 计算相关
- 解决 Error creating bean with name ‘dataSource‘ defined in class path resource 问题
- (阿里巴巴开发手册)为什么阿里巴巴推荐内部员工使用StringBuilder?
- “eclipse在编译代码时运行结果始终是之前程序的结果”如何解决?