之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件。今天终于可以兑现承诺了。frok一份代码https://github.com/JoanZapata/android-pdfview,源码地址:http://xiazai.jb51.net/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,fileUrl,filename); //设置pdf文件地址
2.3对fileFromlocalstorage(this,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="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,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文件全部内容,希望文章能够帮你解决Android 打开网络上pdf文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)