之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件。今天终于可以兑现承诺了。frok一份代码https://github.com/JoanZapata/android-pdfview,源码地址:http://xiazai./201704/yuanma/android-pdfview-master_jb51.rar,开始改造一番。

1.基本思路:
打开网络pdf 思路整体还是来源与图片的加载。
android中加载网络图片的框架有很多个。如image-laoder, fresco、glide等,首先都是从内存中找图片,如果内存中没有,接着从本地找,本地没有在从网络下载。
android中加载pdf也是类似,首先从本地找pdf文件,如果本地存在该pdf文件,直接打开,如果本地不存在,将该pdf文件下载到本地在打开。
下载文件用到了retrofit2的库,已经封装到android_pdf中了。
2.依赖android_pdf库方法
2.1 在项目的gradle中增加如下代码:
compile 'com.lidong.pdf:android_pdf:1.0.1'
2.2 一句代码就可以加载网络pdf。
pdfView.fileFromLocalStorage(this,this,this,fileUrl,fileName); //设置pdf文件地址
2.3对fileFromLocalStorage(this,this,this,fileUrl,fileName)的解析
/**
* 加载pdf文件
* @param onPageChangeListener
* @param onLoadCompleteListener
* @param onDrawListener
* @param fileUrl
* @param fileName
*/
public void fileFromLocalStorage(
final OnPageChangeListener onPageChangeListener,
final OnLoadCompleteListener onLoadCompleteListener,
final OnDrawListener onDrawListener,
String fileUrl,
final String fileName)
3.使用android_pdf库方法
3.1写一个布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.lidong.pdf.androidpdf.MainActivity"> <com.lidong.pdf.PDFView android:id="@+id/pdfView" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
3.2在MainActivity中加载
import android.graphics.Canvas;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.lidong.pdf.PDFView;
import com.lidong.pdf.api.ApiManager;
import com.lidong.pdf.listener.OnDrawListener;
import com.lidong.pdf.listener.OnLoadCompleteListener;
import com.lidong.pdf.listener.OnPageChangeListener;
import com.lidong.pdf.util.FileUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import okhttp3.ResponseBody;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.schedulers.Schedulers;
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 );
displayFromFile1("填写所要打开的pdf地址");
}
/**
* 获取打开网络的pdf文件
* @param fileUrl
* @param fileName
*/
private void displayFromFile1( String fileUrl ,String fileName) {
showProgress(); pdfView.fileFromLocalStorage(this,this,this,fileUrl,fileName); //设置pdf文件地址
}
/**
* 翻页回调
* @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();
hideProgress();
}
@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();
}
/**
* 显示对话框
*/
private void showProgress(){
LoadingUIHelper.showDialogForLoading(this,"报告加载中,请等待。。。",false);
}
/**
* 关闭等待框
*/
private void hideProgress(){
LoadingUIHelper.hideDialogForLoading();
}
代码地址
效果实现:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# android
# 打开pdf文件
# 打开pdf
# 打开网络pdf
# Android 打开本地pdf文件
# Android pdf viewer在android studio应用问题说明详解
# Android 下载并打开PDF
# Doc
# Dwg文档实例
# 加载
# 回调
# 翻页
# 一句
# 有很多
# 也能
# 是从
# 不存在
# 中了
# 所要
# 将该
# 对话框
# 写过
# 让其
# 就可以
# 中找
# 网络地址
# 加载中
# 请等待
# java
相关文章:
SQL查询语句优化的实用方法总结
导航网站建站方案与优化指南:一站式高效搭建技巧解析
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
php json中文编码为null的解决办法
文字头像制作网站推荐软件,醒图能自动配文字吗?
如何选择香港主机高效搭建外贸独立站?
如何快速使用云服务器搭建个人网站?
如何选择美橙互联多站合一建站方案?
网站微信制作软件,如何制作微信链接?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
javascript中的try catch异常捕获机制用法分析
建站DNS解析失败?如何正确配置域名服务器?
小建面朝正北,A点实际方位是否存在偏差?
如何制作一个表白网站视频,关于勇敢表白的小标题?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
Swift开发中switch语句值绑定模式
C++如何编写函数模板?(泛型编程入门)
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何在云虚拟主机上快速搭建个人网站?
如何高效搭建专业期货交易平台网站?
,交易猫的商品怎么发布到网站上去?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
linux top下的 minerd 木马清除方法
建站主机是否属于云主机类型?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
公众号网站制作网页,微信公众号怎么制作?
如何续费美橙建站之星域名及服务?
Android滚轮选择时间控件使用详解
微信推文制作网站有哪些,怎么做微信推文,急?
免费视频制作网站,更新又快又好的免费电影网站?
常州企业建站如何选择最佳模板?
大连网站制作公司哪家好一点,大连买房网站哪个好?
建站之星官网登录失败?如何快速解决?
建站之星2.7模板:企业网站建设与h5定制设计专题
音乐网站服务器如何优化API响应速度?
建站主机与服务器功能差异如何区分?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
定制建站价位费用解析与套餐推荐全攻略
大同网页,大同瑞慈医院官网?
建站主机无法访问?如何排查域名与服务器问题
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Bpmn 2.0的XML文件怎么画流程图
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
湖北网站制作公司有哪些,湖北清能集团官网?
如何在IIS管理器中快速创建并配置网站?
自助网站制作软件,个人如何自助建网站?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
官网建站费用明细查询_企业建站套餐价格及收费标准指南
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。