当前位置: 移动技术网 > IT编程>移动开发>Android > Android内嵌PDF预览

Android内嵌PDF预览

2018年09月29日  | 移动技术网IT编程  | 我要评论

暴雪将至凶手,龙年电影,奥斯卡官网

一、在对应模块的build.gradle文件中加入依赖

dependencies {

    implementation 'com.github.barteksc:android-pdf-viewer:3.1.0-beta.1'

}

二、activity布局xml文件中,加入com.github.barteksc.pdfviewer.pdfview控件

  

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.constraintlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".pdfactivity">

    <com.github.barteksc.pdfviewer.pdfview
        android:id="@+id/pdfview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</android.support.constraint.constraintlayout>

三、pdfview只能预览本地文件 如果是网络pdf还需要下载

  pdfview加载本地文件代码

/**
     * 查看pdf
     */
    private void seepdf(file dest) {
        try {
            pdfview.setvisibility(view.visible);

pdfview.usebestquality(false);
            constants.cache.cache_size=40;
            pdfview.fromfile(dest).load(); 
} catch (exception e) { e.printstacktrace(); } }

  下载pdf使用okhttp:

/**
     * 开始下载pdf
     */
    private void downloadpdf() {
        cacheurl = getcachedir().getabsolutepath();//应用缓存路径
        pdfname = mpdfurl.substring(mpdfurl.lastindexof("/") + 1);//文件名称
        final file dest = new file(cacheurl, pdfname);
        if (dest.exists()) {
            seepdf(dest);
        } else {
            request request = new request.builder().url(mpdfurl).build();
            new okhttpclient().newcall(request).enqueue(new callback() {
                @override
                public void onfailure(call call, ioexception e) {
                    // 下载失败
                }

                @override
                public void onresponse(call call, response response) throws ioexception {
                    sink sink = null;
                    bufferedsink bufferedsink = null;
                    try {
                        if (!dest.exists()) {
                            boolean newfile = dest.createnewfile();
                        }
                        sink = okio.sink(dest);
                        bufferedsink = okio.buffer(sink);
                        bufferedsink.writeall(response.body().source());
                        bufferedsink.close();
                        if (handler == null) {
                            handler = new handler(looper.getmainlooper());
                        }
                        handler.post(new runnable() {
                            @override
                            public void run() {
                                seepdf(dest);
                            }
                        });
                    } catch (exception e) {
                        e.printstacktrace();
                    } finally {
                        if (bufferedsink != null) {
                            bufferedsink.close();
                        }

                    }
                }
            });
        }
    }

  自动翻页的实现:

   1、在pdfview的onrenderlistener实现翻页,handler.postdelayed来定时执行翻页方法

    

 pdfview.fromfile(dest).onrender(new onrenderlistener() {
                @override
                public void oninitiallyrendered(int nbpages) {
                    if (pdf_trun_time != null) {
                        if (handler == null) {
                            handler = new handler();
                        }
                        handler.postdelayed(gonextpagerunnable, pdf_trun_time);
                    }
                }
            })
                    .load();


 private runnable gonextpagerunnable = new runnable() {
        @override
        public void run() {
            if (pdf_trun_time != null) {
                handler.postdelayed(this, pdf_trun_time);//设置循环时间,此处是5秒
                gonextpage();
            }
        }
    };



 private void gonextpage() {
        int totalpage = pdfview.getpagecount();
        int curpage = pdfview.getcurrentpage();
        int nextpage = 0;
        if (curpage < totalpage - 1) {
            nextpage = curpage + 1;
        } else {
            nextpage = 0;
        }

        pdfview.jumpto(nextpage, true);
    }

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网