Android 打開(kāi)本地pdf文件
Android 中打開(kāi)pdf文件也是一種很常見(jiàn)的場(chǎng)景,但是上網(wǎng)找了好多資料,有用WebView加載的,但是要用vpn才能搞,最后發(fā)現(xiàn)一個(gè)庫(kù)挺不錯(cuò)的,再次分享給大家
android-pdfview。下面主要說(shuō)一下該庫(kù)的使用方法。
1. 該庫(kù)的下載地址
https://github.com/JoanZapata/android-pdfview
源碼下載:http://xiazai.jb51.net/201704/yuanma/android-pdfview-master_jb51.rar
2. android-pdfview的簡(jiǎn)單介紹
PDFView是這個(gè)庫(kù)中最核心的類,用于加載pdf文件,PDFView是的實(shí)現(xiàn)是繼承于SurfaceView來(lái)實(shí)現(xiàn)的。主要用到了建造者模式來(lái)設(shè)置相關(guān)的屬性。
fromFile(file) //設(shè)置pdf文件地址 fromAsset(assetFileName) //設(shè)置pdf文件地址 defaultPage(1) //設(shè)置默認(rèn)顯示第1頁(yè) onPageChange(this) //設(shè)置翻頁(yè)監(jiān)聽(tīng) onLoad(this) //設(shè)置加載監(jiān)聽(tīng) onDraw(this) //繪圖監(jiān)聽(tīng) showMinimap(false) //pdf放大的時(shí)候,是否在屏幕的右上角生成小地圖 swipeVertical( false ) //pdf文檔翻頁(yè)是否是垂直翻頁(yè),默認(rèn)是左右滑動(dòng)翻頁(yè) enableSwipe(true) //是否允許翻頁(yè),默認(rèn)是允許翻頁(yè) pages() //把2 , 3 , 4 , 5 過(guò)濾掉 load();
3. 在項(xiàng)目的build.gradle添加這個(gè)依賴
compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'
4.寫(xiě)一個(gè)布局文件
<?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的實(shí)現(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è)置默認(rèn)顯示第1頁(yè) .onPageChange(this) //設(shè)置翻頁(yè)監(jiān)聽(tīng) .onLoad(this) //設(shè)置加載監(jiān)聽(tīng) .onDraw(this) //繪圖監(jiān)聽(tīng) .showMinimap(false) //pdf放大的時(shí)候,是否在屏幕的右上角生成小地圖 .swipeVertical( false ) //pdf文檔翻頁(yè)是否是垂直翻頁(yè),默認(rèn)是左右滑動(dòng)翻頁(yè) .enableSwipe(true) //是否允許翻頁(yè),默認(rèn)是允許翻頁(yè) // .pages() //把 5 過(guò)濾掉 .load(); } private void displayFromFile( File file ) { pdfView.fromFile(file) //設(shè)置pdf文件地址 .defaultPage(6) //設(shè)置默認(rèn)顯示第1頁(yè) .onPageChange(this) //設(shè)置翻頁(yè)監(jiān)聽(tīng) .onLoad(this) //設(shè)置加載監(jiān)聽(tīng) .onDraw(this) //繪圖監(jiān)聽(tīng) .showMinimap(false) //pdf放大的時(shí)候,是否在屏幕的右上角生成小地圖 .swipeVertical( false ) //pdf文檔翻頁(yè)是否是垂直翻頁(yè),默認(rèn)是左右滑動(dòng)翻頁(yè) .enableSwipe(true) //是否允許翻頁(yè),默認(rèn)是允許翻 // .pages( 2 ,5 ) //把2 5 過(guò)濾掉 .load(); } /** * 翻頁(yè)回調(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 總共的頁(yè)數(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(); } }
效果實(shí)現(xiàn):
今天主要是簡(jiǎn)單使用一下,后面準(zhǔn)備將該庫(kù)進(jìn)行拓展,是打開(kāi)網(wǎng)絡(luò)的pdf文件的功能。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
Android動(dòng)態(tài)人臉檢測(cè)的示例代碼(臉數(shù)可調(diào))
本篇文章主要介紹了Android動(dòng)態(tài)人臉檢測(cè)的示例代碼(臉數(shù)可調(diào)),具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08Android仿微信雷達(dá)掃描效果的實(shí)現(xiàn)方法
最近看了一個(gè)視頻講了一種微信雷達(dá)掃描的實(shí)現(xiàn)方案,借鑒了一下,自己也寫(xiě)一個(gè)玩玩,所以下面這篇文章主要給大家介紹了利用Android模仿微信雷達(dá)掃描效果的實(shí)現(xiàn)方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-06-06Android?flutter?Dio鎖的巧妙實(shí)現(xiàn)方法示例
這篇文章主要為大家介紹了Android?flutter?Dio鎖的巧妙實(shí)現(xiàn)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Android8.0適配前臺(tái)定位服務(wù)service的示例代碼
這篇文章主要介紹了Android8.0適配前臺(tái)定位服務(wù)service的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Android ListView分頁(yè)功能實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Android ListView分頁(yè)功能的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05Android通話默認(rèn)打開(kāi)揚(yáng)聲器的方法
這篇文章主要介紹了Android通話默認(rèn)打開(kāi)揚(yáng)聲器的方法.小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08