android 播放pdf文件格式,Android 打开网络上pdf文件

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

}

效果实现:

15059005751.jpg?2017321126

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值