1

レイアウトでテキストと画像の両方をズームする方法を探していました。いくつかの質問によると、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. html の代わりに pdf や doc などの他の形式を使用できますか? ソースコードで何を変更すればよいですか?

私を助けてくれてありがとう。この考えをあきらめるべきか、それとも続けるべきか?

4

2 に答える 2

4

ファイルをソース コードの assets フォルダーに配置して、次の操作を行うことができます。

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

PDF を表示する場合:

API レベル 21 (Lollipop) 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();
于 2016-11-08T08:58:59.470 に答える
0

getExternalFilesDir()そのハードコードされたパスの代わりに使用してください。

IDE を使用してアセットにファイルを配置します。

次に、実行時にこれらのファイルを getExternalFilesDir() にコピーします。そのためのコードは、stackoverflow で何度も公開されています。

WebView はアセットからファイルを直接ロードできるため、ファイルをアセットに残すこともできます。

于 2016-11-08T09:02:03.907 に答える