android 中打开pdf文件也是一种很常见的场景,但是上网找了好多资料,有用webview加载的,但是要用才能搞,最后发现一个库挺不错的,再次分享给大家
android-pdfview。下面主要说一下该库的使用方法。
1. 该库的下载地址
https://github.com/joanzapata/android-pdfview (android studio)
源码下载:http://download.csdn.net/download/huningjun/10236321(eclipse)
2. android-pdfview的简单介绍
pdfview是这个库中最核心的类,用于加载pdf文件,pdfview是的实现是继承于surfaceview来实现的。主要用到了建造者模式来设置相关的属性。
01
02
03
04
05
06
07
08
09
10
11
|
fromfile(file)
//设置pdf文件地址
fromasset(assetfilename)
//设置pdf文件地址
defaultpage(
1
)
//设置默认显示第1页
onpagechange(
this
)
//设置翻页监听
onload(
this
)
//设置加载监听
ondraw(
this
)
//绘图监听
showminimap(
false
)
//pdf放大的时候,是否在屏幕的右上角生成小地图
swipevertical(
false
)
//pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
enableswipe(
true
)
//是否允许翻页,默认是允许翻页
pages()
//把2 , 3 , 4 , 5 过滤掉
load();
|
3. 在项目的build.gradle添加这个依赖
compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'
4.写一个布局文件
1
|
<
|
5.activity的实现
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
package
com.lidong.pdf.androidpdf;
import
android.graphics.canvas;
import
android.support.v7.app.appcompatactivity;
import
android.os.bundle;
import
android.view.viewtreeobserver;
import
android.widget.toast;
import
com.joanzapata.pdfview.pdfview;
import
com.joanzapata.pdfview.listener.ondrawlistener;
import
com.joanzapata.pdfview.listener.onloadcompletelistener;
import
com.joanzapata.pdfview.listener.onpagechangelistener;
import
java.io.file;
public
class
mainactivity
extends
appcompatactivity
implements
onpagechangelistener
,onloadcompletelistener, ondrawlistener {
private
pdfview pdfview ;
@override
protected
void
oncreate(bundle savedinstancestate) {
super
.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
pdfview = (pdfview) findviewbyid( r.id.pdfview );
//从assets目录读取pdf
displayfromassets(
"0010000022464002f__李东.pdf"
);
//从文件中读取pdf
// displayfromfile( new file( "filename"));
}
private
void
displayfromassets(string assetfilename ) {
pdfview.fromasset(assetfilename)
//设置pdf文件地址
.defaultpage(
1
)
//设置默认显示第1页
.onpagechange(
this
)
//设置翻页监听
.onload(
this
)
//设置加载监听
.ondraw(
this
)
//绘图监听
.showminimap(
false
)
//pdf放大的时候,是否在屏幕的右上角生成小地图
.swipevertical(
false
)
//pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
.enableswipe(
true
)
//是否允许翻页,默认是允许翻页
// .pages() //把 5 过滤掉
.load();
}
private
void
displayfromfile( file file ) {
pdfview.fromfile(file)
//设置pdf文件地址
.defaultpage(
6
)
//设置默认显示第1页
.onpagechange(
this
)
//设置翻页监听
.onload(
this
)
//设置加载监听
.ondraw(
this
)
//绘图监听
.showminimap(
false
)
//pdf放大的时候,是否在屏幕的右上角生成小地图
.swipevertical(
false
)
//pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
.enableswipe(
true
)
//是否允许翻页,默认是允许翻
// .pages( 2 ,5 ) //把2 5 过滤掉
.load();
}
/**
* 翻页回调
* @param page
* @param pagecount
*/
@override
public
void
onpagechanged(
int
page,
int
pagecount) {
toast.maketext( mainactivity.
this
,
"page= "
+ page +
" pagecount= "
+ pagecount , toast.length_short).show();
}
/**
* 加载完成回调
* @param nbpages 总共的页数
*/
@override
public
void
loadcomplete(
int
nbpages) {
toast.maketext( mainactivity.
this
,
"加载完成"
+ nbpages , toast.length_short).show();
}
@override
public
void
onlayerdrawn(canvas canvas,
float
pagewidth,
float
pageheight,
int
displayedpage) {
// toast.maketext( mainactivity.this , "pagewidth= " + pagewidth + "
// pageheight= " + pageheight + " displayedpage=" + displayedpage , toast.length_short).show();
}
}
|
效果实现: