Android PdfViewer案例使用
今天按项目要求找了一个android的PDF控件,各种操作效果都非常好,在这里和大家分享一下。
com.joanzapata.pdfview:android-pdfview 该PDF控件加载大存储的PDF就会报错,所以建议使用 AndroidPdfViewer 控件。
这是github的地址:https://github.com/barteksc/AndroidPdfViewer
用法很简单:
1.在build.gradle里面添加依赖
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
2.然后就可以直接在layout里面使用了
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdfView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline2" />
3.Activity
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnPageErrorListener;
import cn.pda.serialport.Tools;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle; public class MainActivity extends AppCompatActivity implements OnPageChangeListener, OnLoadCompleteListener,
OnPageErrorListener, View.OnClickListener { private PDFView pdfView ; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//搭建环境的API Level必须大于等于9
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
} pdfView = findViewById( R.id.pdfView); displayFromFile(new File(Environment.getExternalStorageDirectory() + "/UHFToPdf/test.pdf")); } private void displayFromFile( File file ) { try{
pdfView.fromFile(file) //设置pdf文件地址
.defaultPage(pageNumber)
.onPageChange(this)
.enableSwipe(false)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.spacing(10) // in dp
.onPageError(this)
// .pageFitPolicy(FitPolicy.BOTH)
.load();
}catch (Exception ex){
ex.printStackTrace();
}
} @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 onPageError(int page, Throwable t) {
Log.e(TAGNAME, "Cannot load page " + page);
} }
Android PdfViewer案例使用的更多相关文章
- android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】
android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...
- AllJoyn+Android开发案例-android跨设备调用方法
AllJoyn+Android开发案例-android跨设备调用方法 项目须要涉及AllJoyn开源物联网框架.前面主要了解了一些AllJoyn主要的概念.像总线,总线附件,总线对象,总线接口这种概念 ...
- Android小案例——简单图片浏览器
今天上午休息看Android书,里面有个变化图片的示例引起了我的兴趣. 示例需求: 有N张图片,循环显示图片的内容.如果需求让我写我会使用一个变量count来保存显示图片数据的索引,图片显示时做个判断 ...
- android 登陆案例_最终版本 sharedpreference
xml 与之前的登陆案例相同 java代码: package com.itheima.login; import java.util.Map; import com.itheima.login.ut ...
- android ANR 案例分析
案例1:关键词:ContentResolver in AsyncTask onPostExecute, high iowait Process:com.android.email Activity:c ...
- Android PdfViewer
今天按项目要求找了一个android的PDF控件,各种操作效果都非常好,在这里和大家分享一下. 这是github的地址:https://github.com/barteksc/AndroidPdfVi ...
- Android LaunchMode案例篇
首先感谢小伙伴的关注.然后祝愿广大的情侣们节日快乐! 在开发中有时会遇到这种场景,用户点击注冊.第一步,第二步,完毕注冊跳转到登录界面,不须要用户一步一步的返回到登录界面.这是怎么实现的呢? 案例:有 ...
- android 自动化测试案例之 MonkeyRunner
#-*- coding: UTF-8 -*- #上面第一行是设置文件编码,windows下第一行必须是这个#文件名 MonkeyRunner.py#功能: 使用monkey runner测试app,此 ...
- android 自动化测试案例之 MonkeyScript
#文件名 MonkeyScript.mks #功能: 使用monkey script测试app,此案例是测试搜索功能(输入关键字,然后点击搜索按钮)#参考: http://blog.csdn.net/ ...
随机推荐
- java中? extends T 和? super T解析
转:https://blog.csdn.net/qq_25337221/article/details/81669630 PECS原则 最后看一下什么是PECS(Producer Extends Co ...
- DELPHI中函数、过程变量的声明与应用
Procedure型变量: 在DELPHI中,函数.过程的地址可以赋给一个特殊类型的变量,变量可用如下方式声明: var p : procedure(num:integer); //过程 或: var ...
- linux iptables相关
iptables -A INPUT -p udp --dport 90 -j ACCEPT iptables -A INPUT -p tcp -m state --state ESTABLISHED ...
- ES6标准入门 第四章:字符串的扩展
1.字符串的Unicode 表示法 JavaScript 允许采用 \uxxxx 表示一个字符,其中 xxxx 表示字符的码点. "\u0061" // "a" ...
- mysql5.7无法启动原因排查
前天刚刚拷了同事最新的MySQL5.7,安装成功后运行良好,今天却无法启动,Navicat也无法连接. 开始排查原因: 1.进入dos命令窗口,输入net start mysql启动,提示 百度出现错 ...
- 一个JSON解析器
来源 <JavaScript语言精粹(修订版)> 代码 <!DOCTYPE html> <html> <head> <meta charset=& ...
- 第十届山东省acm省赛补题(2)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4124 L Median Time Limit: 1 Second ...
- 关于Polyaxon的使用
1.首先upload代码 polyaxon upload 注意,upload只能在新建notebook前进行,且每次只能upload一次,所以在结束每次项目测试(开发)前,都应该在Polyaxon上修 ...
- 20191114 Spring Boot官方文档学习(4.7)
4.7.开发Web应用程序 Spring Boot非常适合于Web应用程序开发.您可以使用嵌入式Tomcat,Jetty,Undertow或Netty创建独立的HTTP服务器.大多数Web应用程序都使 ...
- Grafana配置文件
配置文件位置 /usr/local/opt/grafana/share/grafana/default.ini /usr/local/etc/grafana/grafana.ini 配置文件调用顺序 ...