1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Android 打开网络上pdf文件

Android 打开网络上pdf文件

时间:2018-09-26 19:05:19

相关推荐

Android 打开网络上pdf文件

版权声明:本文为博主原创文章,未经博主允许。 /u010046908/article/details/53927157

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

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)

OnPageChangeListener onPageChangeListener :翻页回调 OnLoadCompleteListener onLoadCompleteListener:加载完成的回调 OnDrawListener:页面绘制的回调 String fileUrl : 文件的网络地址String fileName 文件名称

3.使用android_pdf库方法

3.1写一个布局文件

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/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 ;@Overrideprotected 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*/@Overridepublic void onPageChanged(int page, int pageCount) {Toast.makeText( MainActivity.this , "page= " + page +" pageCount= " + pageCount , Toast.LENGTH_SHORT).show();}/*** 加载完成回调* @param nbPages 总共的页数*/@Overridepublic void loadComplete(int nbPages) {Toast.makeText( MainActivity.this , "加载完成" + nbPages , Toast.LENGTH_SHORT).show();hideProgress();}@Overridepublic 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();}

代码地址

效果实现:

代码已经奉上,请大家伙给点建议。一起交流(1561281670)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。