是否有可能使用web浏览器作为html阅读器(离线)? [英] is it possible to use web view as a html reader (offline)?

查看:234
本文介绍了是否有可能使用web浏览器作为html阅读器(离线)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一种在我的布局中缩放文字和图片的方法。
根据一些问题,网络视图是一种简单的方法。一段时间后,我发现这个代码为webview:

  import android.app.Activity; 
导入android.os.Bundle;
导入android.webkit.WebView;

公共类WebViewActivity扩展活动{

私有WebView webView;

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);

webView =(WebView)findViewById(R.id.webView1);
webView.getSettings()。setJavaScriptEnabled(true);
webView.loadUrl(http://www.google.com);

}

}

我试过使用 file:/// 而不是 http://
,所以我使用了这个路径:

  file:/// sdcard / Android / data / [My App Package Name] /about.html 

它对我来说工作得很好,但我有一些严重的问题。



这里是我的问题:


  1. 是我使用的这个路径是否适用于所有其他的android设备?

  2. 我不知道如何提取html文件以便第一次运行到我正在使用的路径。

  3. 是否有从资产加载文件的功能?

  4. 第一次运行时提取文件的源代码是什么?

  5. 我可以使用其他格式,比如pdf或doc代替html吗?如果我不能在源代码中改变什么?

感谢大家帮助我。我应该放弃还是继续这个想法?

解决方案

您可以将文件放入源代码中的资产文件夹中,然后执行此操作:

  WebView webView =(WebView)findViewById(R.id.webView1); 
webview.loadUrl(file:///android_assets/file.html);

用于显示PDF:



由于API Level 21(Lollipop)Android提供了一个PdfRenderer类:

  //创建一个新的渲染器
PdfRenderer renderer = new PdfRenderer(getSeekableFileDescriptor());

//让我们渲染所有页面
final int pageCount = renderer.getPageCount();
for(int i = 0; i< pageCount; i ++){
Page page = renderer.openPage(i);

//说我们渲染显示在屏幕上
page.render(mBitmap,null,null,Page.RENDER_MODE_FOR_DISPLAY);

//用位图做东西

//关闭页面
page.close();
}

//关闭渲染器
renderer.close();

本示例演示如何使用Android 5.0 Lollipop中引入的PdfRenderer在屏幕上显示PDF文档。



对于较旧的API,checkout AndroidPdfViewer库,适用于API 11及更高版本:



<$ (Uri)

pdfView.fromFile(文件)

pdfView.fromAsset(字符串)
.pages(0,2,1,3,3,3)//默认显示所有页面
.enableSwipe(true)
.swipeHorizo​​ntal(false)
.enableDoubletap(true)
.defaultPage(0)
.onDraw(onDrawListener)
.onLoad(onLoadCompleteListener)
.onPageChange(onPageChangeListener)
.onPageScroll(onPageScrollListener)
。 onError(onErrorListener)
.enableAnnotationRendering(false)
。密码(空)
.scrollHandle(null)
.load();


i was searching for a way to zoom for both text and picture in my layout. according to some questions web view is a easy way to do it. after a while i found this code for webview:

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class WebViewActivity extends Activity {

private WebView webView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://www.google.com");

}

}

i tried to use file:/// instead of http:// so i used this path:

file:///sdcard/Android/data/[My App Package Name]/about.html

it seems its working fine for me, but i have some serious problems.

here is my problems:

  1. is this path i am using is works for all other android devices?
  2. i dont know how to extract html files for the first run in to that path i am using.
  3. is there anyway to load the files from assets?
  4. what is the source code for extract files in first run?
  5. can i use other formats like pdf or doc instead of html? if i couldnt what should i change in the source code?

thank guys for helping me. should i give up or continue this idea?

解决方案

You could just put the file into your assets folder in the source code, and then do this:

WebView webView = (WebView)findViewById(R.id.webView1);
webview.loadUrl("file:///android_assets/file.html");

For display PDF:

Since API Level 21 (Lollipop) Android provides a PdfRenderer class:

// create a new renderer
PdfRenderer renderer = new PdfRenderer(getSeekableFileDescriptor());

// let us just render all pages
final int pageCount = renderer.getPageCount();
for (int i = 0; i < pageCount; i++) {
  Page page = renderer.openPage(i);

  // say we render for showing on the screen
  page.render(mBitmap, null, null, Page.RENDER_MODE_FOR_DISPLAY);

  // do stuff with the bitmap

  // close the page
  page.close();
}

// close the renderer
renderer.close();

This sample demonstrates how to display PDF document on screen using the PdfRenderer introduced in Android 5.0 Lollipop.

For older APIs, checkout AndroidPdfViewer library, works on API 11 and higher:

pdfView.fromUri(Uri)
or
pdfView.fromFile(File)
or
pdfView.fromAsset(String)
    .pages(0, 2, 1, 3, 3, 3) // all pages are displayed by default
    .enableSwipe(true)
    .swipeHorizontal(false)
    .enableDoubletap(true)
    .defaultPage(0)
    .onDraw(onDrawListener)
    .onLoad(onLoadCompleteListener)
    .onPageChange(onPageChangeListener)
    .onPageScroll(onPageScrollListener)
    .onError(onErrorListener)
    .enableAnnotationRendering(false)
    .password(null)
    .scrollHandle(null)
    .load();

这篇关于是否有可能使用web浏览器作为html阅读器(离线)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆