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(安卓)在安装完成界面,点击打开应用程序。在应用程序点击h
  2. Android(安卓)init进程——源码分析
  3. Android(安卓)Studio Error:前言中不允许有内容。
  4. Android(安卓)上传头像(文件)到服务器
  5. Mac android 环境配置
  6. Android(安卓)根文件系统启动过程。
  7. Android进程系列第六篇---LowmemoryKiller机制分析(上)
  8. Android(安卓)基础
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android(安卓)编译中的LOCAL_SDK_VERSION
  2. Android新特性-RecyclerView之基础篇
  3. 使用Android(安卓)studio3.6的java api方
  4. Android学习笔记:通过Android之Service实
  5. android:dkplayer中ijkplayer延迟长的问题
  6. 第一次运行Android(安卓)Studio
  7. android 网络编程 HttpGet类和HttpPost类
  8. android 文件合并打包 Error:Execution f
  9. Android(安卓)Fragment和FragmentActivit
  10. Android(安卓)Sudio 开发环境配置