本文要讲的是,vudroid阅读器选择某个文件后,如何展示该文件的内容。
这里不涉及vudroid是如何读取文件内容的,只是涉及读取到文件内容后,如何展示这些内容。
这里涉及到三个类:DocumentView,Page,PageTreeNode。
DocumentView我们可以认为是一个显示容器,它里面存放的内容是一个个的页(Page),而每个页是由若干个PageTreeNode组成的。
因此,我们可以看到,DocumentView只是负责处理触摸屏时间、按钮时间、滚动事件,当然这里还涉及到放大缩小这个功能的处理;而Page是包括一页的内容,包括页边界、文本内容等;PageTreeNode中存放的才是真正的文本内容。
1、DocumentView
这里要做的内容包括按键处理、触摸屏事件处理(支持多点触摸)、放大缩小功能处理、scroll事件处理:
1)按键事件处理,这里你按上下左右键,页面内容是可以上下左右移动的。
2)触摸屏事件处理(这里由于引入了多点触摸的库,因此是支持多点触摸的)
第一段代码时倒入多点触摸的库
第二段代码是处理触摸屏事件
这段代码中,首先是让多点触摸的处理类处理事件,如果该事件在这里不被处理,则按普通触摸屏事件(区别于多点触摸)处理。
3)、缩放功能处理
这个应该是由ZoomListener触发的事件,具体可以研究下ZoomListener的代码。
4)scroll事件处理
只要调用了scrollTo和scrollBy都会触发onScrollChanged函数。该函数的代码是所有DocumentView事件的基础,因为其他事件最终都会调用这一个代码。
这里我们看到,DocumentView中要改变显示内容的话,最终都是通过更改每个Page的显示来实现的。读这一段代码的时候要注意以下这段函数:
这一端代码定义每一页的大小。根据PageTreeNode中的代码判断,这一部分显示是这样的,pages中的内容,我们可以看作是一页页首尾连在一起的卷轴,DocumentView相当于一个放大镜,这个放大镜放到什么地方,就显示什么内容。
2、page
说实在的,我没有搞清楚有了page以后,让page来显示内容就可以了,为什么要加一个PageTreeNode类?
page类的功能实际上很直白:显示一页内容的上下分界线,滑动到某页时在其中间显示当前页数(这个黑体页数值会被PageTreeNode的内容覆盖,可以认为是文件内容没有显示之前,先显示一个页数值)。
3、PageTreeNode
PageTreeNode类是用来显示文件内容的,就是你在屏幕上看得到的实实在在的阅读内容。
从以下函数知道PageTreeNode中的内容在PageTreeNode的方框与documentView的方框有交集时可以显示。
但是我没弄明白pageSliceBounds、children、thresholdHit()等等这些成员是拿来做什么的。从DecodeServiceBase的代码中可以看出pageSliceBounds与读取具体某种格式的文件(如pdf文件)有关系,但其具体在什么地方有用,也只有等阅读以下读取pdf的那些代码才能搞明白了。
分享到:
相关推荐
基于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文件进行放大...
用于演示在手机屏幕上显示ppt和pdf文件内容的功能,其中读取ppt采用了读取纯文本与读取图文的两种方式,读取pdf采用了Vudroid框架和MuPDF框架分别进行解析,并对不同方式和框架进行了效果对比。
用于演示在手机屏幕上显示ppt和pdf文件内容的功能,其中读取ppt采用了读取纯文本与读取图文的两种方式,读取pdf采用了Vudroid框架和MuPDF框架分别进行解析,并对不同方式和框架进行了效果对比。
Vudroid是一款可以阅读pdf和djvu格式文本的阅读器。可以阅读本地的pdf文件,遇到大文件时渲染有点慢。
基于vudroid,以及别人的版本改的,非常简洁,能够快读读取pdf文件,不像其他资源那样读取需要很长的时间。只要改一下MainActivity中的文件路径即可,非常适合二次开发,能翻页,能放大缩小
libvudroid.so相信有很多朋友在寻找,我在使用vudroid等很多开源PDF阅读器代码时候都缺少的.so文件,我通过调用底层C库自己编译加载了一个.so文件~~~
Android djvu and pdf viewer
实现android程序内打开pdf,基于vudroid ndk解析pdf
Android读取pdf,vudroid的一个例子,不支持双指粘合,仅供学习参考使用。