簡體   English   中英

是否可以將網絡視圖用作html閱讀器(離線)?

[英]is it possible to use web view as a html reader (offline)?

我正在尋找一種在布局中同時縮放文本和圖片的方法。 根據某些問題,Web視圖是一種簡單的方法。 一段時間后,我發現此代碼用於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");

}

}

我嘗試使用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級別21(棒棒糖),Android提供了PdfRenderer類:

// 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();

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

對於較舊的API,檢出AndroidPdfViewer庫可以在API 11及更高版本上使用:

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();

使用getExternalFilesDir()代替該硬編碼路徑。

使用IDE將文件放入資產中。

然后在運行時將這些文件復制到getExternalFilesDir()。 為此的代碼已經在stackoverflow上發布了很多次。

您也可以將文件保留在資產中,因為WebView可以直接從資產中加載它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM