感谢:https://blog.csdn.net/j236027367/article/details/78851248
上面的那篇博客已经详细地介绍了如何完整地加入这个功能,甚至还加入了双指缩放!就很厉害。
下面我记录的将会是我以后直接使用的方法:
①创建一个assets的文件夹,并将pdfjs解压到该文件夹下;
链接:https://pan.baidu.com/s/14qyy6uQIga64uvzmOUptyQ
提取码:tzq0
②加入一个webview,并对webview做好配置。
private void initView() {
WebSettings settings = webView.getSettings();
settings.setSavePassword(false);
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
settings.setBuiltInZoomControls(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webView.setWebChromeClient(new WebChromeClient());
}
③最后就是显示操作了,这里使用一个本地的test.pdf文件。
private void showWeb() {
File file = new File(Environment.getExternalStorageDirectory() + "/Monitor/" + "test.pdf");
if (file.exists()) {
LogUtils.d("文件的路径是:" + file.getAbsolutePath() + ",文件大小是:" + file.length());
Uri uri = FileProvider.getUriForFile(this, "包名.fileprovider", file);
String url = "file:///android_asset/pdfjs/web/viewer.html?file=" + uri;
LogUtils.d("加载的文件url是:" + url);
webView.loadUrl(url);
}
}
④加入一个释放webview的方法,避免webview在destroy的时候因zoomControls导致窗体泄露而闪退。
private void releaseWebView() {
if (webView != null) {
webView.setVisibility(View.GONE);
webView.removeAllViews();
conditionWeb.removeView(webView);
conditionWeb.removeAllViews();
webView.destroy();
}
}