vudroid是一款能读PDF和djvu两种格式的阅读器,其特点是能够跳页、全屏阅读、能够一次两页连续缓冲、能自由进行页面的缩放、能记忆阅读位置、划屏翻页流畅。其缺点是当文件大时,渲染速度较慢,偶尔会退出。
在分析vudroid源码的过程中,我们将其分为三个部分:
1)操作主界面(选择文件、浏览阅读历史部分)
2)阅读界面(涉及阅读时的操作、事件处理)
3)源文件解析部分(主要是读取PDF和djvu文件部分,该部分涉及对相关文件的格式解析)
1、主界面
vudroid的主界面 比较简单,主要包括一个文件浏览界面和一个浏览阅读历史界面,使用一个tabHost来实现 ,其界面如下:
browse界面浏览sdcard文件夹,显示其中的文件目录,对于文件只显示pdf、djvu、djv三种格式文件。而recent则显示最近浏览过的文件列表。
这一部分的实现是比较简单的,主要包括了3个文件:
1、MainBrowserActivity
我们先来看看MainBrowserActivity.java的源码:
这里将所有与界面相关的东西都留给BaseBrowserActivity.java去做了。MainBrowserActivity只负责判断可以阅读类型的文件,并转到相关的处理处理类去处理。MainBrowserActivity重载了createFileFilter函数,用于建立一个文件筛选器。这实际上是一个解耦合的过程,后续需要添加其他格式的文件,如txt,则只需修改createFileFilter函数即可,而没有必要动BaseBrowserActivity中的代码。
2、BaseBrowserActivity
对于BaseBrowserActivity文件,其实可以猜到它所完成的功能:生成两个listview去填充tabHost。于是看它的oncreate函数:
这里对于tabHost的两个tab:第一个browse,需要显示当前文件目录,点击文件夹时显示下一个文件夹目录,而点击文件时则转到浏览该文件的activity;而第二个recent,则只需要做到点击文件时,转到浏览该文件的activity即可。于是我们可以看到,这两个tab中listview的setOnItemClickListener是有区别的。
对于browse:
而对于recent:
从源码可以看出,这两者的区别是显而易见的。
3、ViewerPreferences
ViewerPreferences文件主要是利用SharedPreferences存储了两个参数:是否全屏(FULL_SCREEN)、最近浏览文件列表。
对于最近浏览文件,其代码为:
4、adapter
项目中用到的两个Adapter都是重载过的:BrowserAdapter和UriBrowserAdapter。
Adapter的作用主要是连接view和dataset。其中有一个比较重要的函数是getView,每个数据集的一条数据会生成一个view,该view就是通过该函数得来的。因此如果你如果要让一个view显示自己的数据,就必须重载该函数。
另外,Adapter的数据集在发生变化时,需要通知view去改变,是通过notifyDataSetInvalidated()函数完成的。
分享到:
相关推荐
基于vudroid源码的优化,在android中阅读PDF. 自己在项目中用到的,所以共享下,关键是没分了
开源 pdf 阅读器 android 版本源码。SVN下来的项目无法直接跑,我处理了一下,可直接用eclipse加载。供参考吧! 网址:http://code.google.com/p/vudroid/ 功能:pdf阅读、双指放缩 性能:加载很慢、慢也就罢了,...
vudroid android pdf阅读器可以阅读pdf和djvu格式文本的阅读器,采用不高ndk开发!
向大家推荐一款开源的android 下pdf阅读器源码 一起学习
代码使用ndk编程,使用libvudroid.so本地库,实现pdf文件阅读, 用户体验流畅,值得学习
VuDroid(Android PDF阅读器)源代码 具体使用可以看我的博客http://blog.csdn.net/l598252892
就是使用VuDroid 源码,做了个Demo
一个基于vudroid+mupdf的pdf阅读器. 在vudroid的基础上,使用了mupdf1.24版本的so,依赖的aar在https://download.csdn.net/download/archko/88845564 修正了阅读器的bug 支持epub,mobi格式. 添加了水平滚动. 优化的...
android-pdfview是一个Android类库,提供一个快速读取显示Android PDF文件的组件——PDFView,该组件支持手势、动画和缩放。并且基于Google的VuDroid类库解码PDF文件。可以通过手势滑动PDF文件、对PDF文件进行放大...
Android djvu and pdf viewer
libvudroid.so相信有很多朋友在寻找,我在使用vudroid等很多开源PDF阅读器代码时候都缺少的.so文件,我通过调用底层C库自己编译加载了一个.so文件~~~
用于演示在手机屏幕上显示ppt和pdf文件内容的功能,其中读取ppt采用了读取纯文本与读取图文的两种方式,读取pdf采用了Vudroid框架和MuPDF框架分别进行解析,并对不同方式和框架进行了效果对比。
实现android程序内打开pdf,基于vudroid ndk解析pdf
Android读取pdf,vudroid的一个例子,不支持双指粘合,仅供学习参考使用。
用于演示在手机屏幕上显示ppt和pdf文件内容的功能,其中读取ppt采用了读取纯文本与读取图文的两种方式,读取pdf采用了Vudroid框架和MuPDF框架分别进行解析,并对不同方式和框架进行了效果对比。
Vudroid是一款可以阅读pdf和djvu格式文本的阅读器。可以阅读本地的pdf文件,遇到大文件时渲染有点慢。
基于vudroid,以及别人的版本改的,非常简洁,能够快读读取pdf文件,不像其他资源那样读取需要很长的时间。只要改一下MainActivity中的文件路径即可,非常适合二次开发,能翻页,能放大缩小