Demo下载地址:https://download.csdn.net/download/as425017946/10664926

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)的解析

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

/**

 

 * 加载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)

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

3.使用android_pdf库方法

3.1写一个布局文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

<?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中加载

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

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();

 }

更多相关文章

  1. Android 根文件系统启动过程。
  2. Android 上传头像(文件)到服务器
  3. Android代码混淆配置(Proguard文件解析)
  4. 升级Android SDK后ADT找不到adb.exe文件的解决办法
  5. Android Handler 异步消息处理机制的妙用 创建强大的图片加载类
  6. android 文件系统分析
  7. android下解析xml文件遇到中文问题
  8. Android开发5――文件读写

随机推荐

  1. TextView中style的应用
  2. Android 解决Handler在运行时加载报空指
  3. Android各版本的SDK Platforms和API Leve
  4. Android旋转屏幕不销毁数据的方法
  5. 你需要知道的Android拍照适配方案
  6. Android 文件存储的简单实现
  7. Android Password Manager
  8. Android之SurfaceView实现视频播放
  9. android 保持屏幕唤醒状态
  10. 「React Native」Android返回键监听