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写一个布局文件
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">
android:id="@+id/pdfView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
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();
}
效果实现:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!