是否可以将网络视图用作 html reader(离线)?
is it possible to use web view as a html reader (offline)?
我正在寻找一种在我的布局中同时缩放文本和图片的方法。
根据一些问题,网络视图是一种简单的方法。过了一会儿,我找到了 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
它似乎对我来说工作正常,但我有一些严重的问题。
这是我的问题:
- 我使用的这条路径是否适用于所有其他 android 设备?
- 我不知道如何将第一个 运行 的 html 文件提取到我正在使用的路径中。
- 有没有办法从资产中加载文件?
- 第一个运行中提取文件的源代码是什么?
- 我可以使用 pdf 或 doc 等其他格式来代替 html 吗?如果我不能,我应该在源代码中更改什么?
感谢大家帮助我。我应该放弃还是继续这个想法?
您可以直接将文件放入源代码中的 assets 文件夹中,然后执行以下操作:
WebView webView = (WebView)findViewById(R.id.webView1);
webview.loadUrl("file:///android_assets/file.html");
显示PDF:
因为 API Level 21 (Lollipop) Android 提供了一个 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();
此示例演示 how to display PDF document on screen using the PdfRenderer introduced in Android 5.0 Lollipop.
对于年龄较大的 API,结帐 AndroidPdfViewer library,适用于 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()。执行此操作的代码已在 Whosebug 上多次发布。
您也可以将文件留在资产中,因为 WebView 可以直接从资产中加载它们。
我正在寻找一种在我的布局中同时缩放文本和图片的方法。 根据一些问题,网络视图是一种简单的方法。过了一会儿,我找到了 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
它似乎对我来说工作正常,但我有一些严重的问题。
这是我的问题:
- 我使用的这条路径是否适用于所有其他 android 设备?
- 我不知道如何将第一个 运行 的 html 文件提取到我正在使用的路径中。
- 有没有办法从资产中加载文件?
- 第一个运行中提取文件的源代码是什么?
- 我可以使用 pdf 或 doc 等其他格式来代替 html 吗?如果我不能,我应该在源代码中更改什么?
感谢大家帮助我。我应该放弃还是继续这个想法?
您可以直接将文件放入源代码中的 assets 文件夹中,然后执行以下操作:
WebView webView = (WebView)findViewById(R.id.webView1);
webview.loadUrl("file:///android_assets/file.html");
显示PDF:
因为 API Level 21 (Lollipop) Android 提供了一个 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();
此示例演示 how to display PDF document on screen using the PdfRenderer introduced in Android 5.0 Lollipop.
对于年龄较大的 API,结帐 AndroidPdfViewer library,适用于 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()。执行此操作的代码已在 Whosebug 上多次发布。
您也可以将文件留在资产中,因为 WebView 可以直接从资产中加载它们。