Android 打開本地pdf文件
Android 中打開pdf文件也是一種很常見的場景,但是上網(wǎng)找了好多資料,有用WebView加載的,但是要用vpn才能搞,最后發(fā)現(xiàn)一個庫挺不錯的,再次分享給大家
android-pdfview。下面主要說一下該庫的使用方法。
1. 該庫的下載地址
https://github.com/JoanZapata/android-pdfview
源碼下載:http://xiazai.jb51.net/201704/yuanma/android-pdfview-master_jb51.rar
2. android-pdfview的簡單介紹
PDFView是這個庫中最核心的類,用于加載pdf文件,PDFView是的實現(xiàn)是繼承于SurfaceView來實現(xiàn)的。主要用到了建造者模式來設(shè)置相關(guān)的屬性。
fromFile(file) //設(shè)置pdf文件地址 fromAsset(assetFileName) //設(shè)置pdf文件地址 defaultPage(1) //設(shè)置默認顯示第1頁 onPageChange(this) //設(shè)置翻頁監(jiān)聽 onLoad(this) //設(shè)置加載監(jiān)聽 onDraw(this) //繪圖監(jiān)聽 showMinimap(false) //pdf放大的時候,是否在屏幕的右上角生成小地圖 swipeVertical( false ) //pdf文檔翻頁是否是垂直翻頁,默認是左右滑動翻頁 enableSwipe(true) //是否允許翻頁,默認是允許翻頁 pages() //把2 , 3 , 4 , 5 過濾掉 load();
3. 在項目的build.gradle添加這個依賴
compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'
4.寫一個布局文件
<?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.joanzapata.pdfview.PDFView android:id="@+id/pdfView" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
5.Activity的實現(xiàn)
package com.lidong.pdf.androidpdf;
import android.graphics.Canvas;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewTreeObserver;
import android.widget.Toast;
import com.joanzapata.pdfview.PDFView;
import com.joanzapata.pdfview.listener.OnDrawListener;
import com.joanzapata.pdfview.listener.OnLoadCompleteListener;
import com.joanzapata.pdfview.listener.OnPageChangeListener;
import java.io.File;
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 );
//從assets目錄讀取pdf
displayFromAssets("0010000022464002F__李東.pdf");
//從文件中讀取pdf
// displayFromFile( new File( "fileName"));
}
private void displayFromAssets(String assetFileName ) {
pdfView.fromAsset(assetFileName) //設(shè)置pdf文件地址
.defaultPage(1) //設(shè)置默認顯示第1頁
.onPageChange(this) //設(shè)置翻頁監(jiān)聽
.onLoad(this) //設(shè)置加載監(jiān)聽
.onDraw(this) //繪圖監(jiān)聽
.showMinimap(false) //pdf放大的時候,是否在屏幕的右上角生成小地圖
.swipeVertical( false ) //pdf文檔翻頁是否是垂直翻頁,默認是左右滑動翻頁
.enableSwipe(true) //是否允許翻頁,默認是允許翻頁
// .pages() //把 5 過濾掉
.load();
}
private void displayFromFile( File file ) {
pdfView.fromFile(file) //設(shè)置pdf文件地址
.defaultPage(6) //設(shè)置默認顯示第1頁
.onPageChange(this) //設(shè)置翻頁監(jiān)聽
.onLoad(this) //設(shè)置加載監(jiān)聽
.onDraw(this) //繪圖監(jiān)聽
.showMinimap(false) //pdf放大的時候,是否在屏幕的右上角生成小地圖
.swipeVertical( false ) //pdf文檔翻頁是否是垂直翻頁,默認是左右滑動翻頁
.enableSwipe(true) //是否允許翻頁,默認是允許翻
// .pages( 2 ,5 ) //把2 5 過濾掉
.load();
}
/**
* 翻頁回調(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();
}
@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();
}
}
效果實現(xiàn):


今天主要是簡單使用一下,后面準備將該庫進行拓展,是打開網(wǎng)絡(luò)的pdf文件的功能。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
Android動態(tài)人臉檢測的示例代碼(臉數(shù)可調(diào))
本篇文章主要介紹了Android動態(tài)人臉檢測的示例代碼(臉數(shù)可調(diào)),具有一定的參考價值,有興趣的可以了解一下2017-08-08
Android?flutter?Dio鎖的巧妙實現(xiàn)方法示例
這篇文章主要為大家介紹了Android?flutter?Dio鎖的巧妙實現(xiàn)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Android8.0適配前臺定位服務(wù)service的示例代碼
這篇文章主要介紹了Android8.0適配前臺定位服務(wù)service的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
Android ListView分頁功能實現(xiàn)方法
這篇文章主要為大家詳細介紹了Android ListView分頁功能的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05

