Android 打開網(wǎng)絡(luò)上pdf文件
之前寫過一篇Android打開本地pdf文件的文章,最后總結(jié)的時候說,后面一定要拓展庫,讓其也能打開網(wǎng)絡(luò)的的pdf文件。今天終于可以兌現(xiàn)承諾了。frok一份代碼https://github.com/JoanZapata/android-pdfview,源碼地址:http://xiazai.jb51.net/201704/yuanma/android-pdfview-master_jb51.rar,開始改造一番。
1.基本思路:
打開網(wǎng)絡(luò)pdf 思路整體還是來源與圖片的加載。
android中加載網(wǎng)絡(luò)圖片的框架有很多個。如image-laoder, fresco、glide等,首先都是從內(nèi)存中找圖片,如果內(nèi)存中沒有,接著從本地找,本地沒有在從網(wǎng)絡(luò)下載。
android中加載pdf也是類似,首先從本地找pdf文件,如果本地存在該pdf文件,直接打開,如果本地不存在,將該pdf文件下載到本地在打開。
下載文件用到了retrofit2的庫,已經(jīng)封裝到android_pdf中了。
2.依賴android_pdf庫方法
2.1 在項目的gradle中增加如下代碼:
compile 'com.lidong.pdf:android_pdf:1.0.1'
2.2 一句代碼就可以加載網(wǎng)絡(luò)pdf。
pdfView.fileFromLocalStorage(this,this,this,fileUrl,fileName); //設(shè)置pdf文件地址
2.3對fileFromLocalStorage(this,this,this,fileUrl,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 :翻頁回調(diào)
- OnLoadCompleteListener onLoadCompleteListener:加載完成的回調(diào)
- OnDrawListener:頁面繪制的回調(diào)
- String fileUrl : 文件的網(wǎng)絡(luò)地址
- 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地址");
}
/**
* 獲取打開網(wǎng)絡(luò)的pdf文件
* @param fileUrl
* @param fileName
*/
private void displayFromFile1( String fileUrl ,String fileName) {
showProgress(); pdfView.fileFromLocalStorage(this,this,this,fileUrl,fileName); //設(shè)置pdf文件地址
}
/**
* 翻頁回調(diào)
* @param page
* @param pageCount
*/
@Override
public void onPageChanged(int page, int pageCount) {
Toast.makeText( MainActivity.this , "page= " + page +
" pageCount= " + pageCount , Toast.LENGTH_SHORT).show();
}
/**
* 加載完成回調(diào)
* @param nbPages 總共的頁數(shù)
*/
@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);
}
/**
* 關(guān)閉等待框
*/
private void hideProgress(){
LoadingUIHelper.hideDialogForLoading();
}
效果實現(xiàn):

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
Android自定義控件eBook實現(xiàn)翻書效果實例詳解
這篇文章主要介紹了Android自定義控件eBook實現(xiàn)翻書效果的方法,結(jié)合實例形式分析了Android自定義控件實現(xiàn)翻書效果的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2016-10-10
Android中ArrayList和數(shù)組相互轉(zhuǎn)換
在我們?nèi)粘i_發(fā)中難免會要將ArrayList和數(shù)組相互轉(zhuǎn)換,那么如何才能相互轉(zhuǎn)換呢?下面跟著小編一起通過這篇文章學(xué)習(xí)學(xué)習(xí)。2016-08-08
android獲取附近藍(lán)牙設(shè)備并計算距離的實例代碼
下面小編就為大家分享一篇android獲取附近藍(lán)牙設(shè)備并計算距離的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
在Android上實現(xiàn)HttpServer的示例代碼
本篇文章主要介紹了在Android上實現(xiàn)HttpServer的示例代碼,實現(xiàn)Android本地的微型服務(wù)器,具有一定的參考價值,有興趣的可以了解一下2017-08-08
Android自定義谷歌風(fēng)格ProgressBar
這篇文章主要為大家詳細(xì)介紹了Android自定義谷歌風(fēng)格ProgressBar的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02

