2016-11-08 4 views
1

レイアウトでテキストと画像の両方をズームする方法を探していました。 いくつかの質問によると、Webビューは簡単な方法です。しばらく後、私はWebViewのために、このコードを見つけました:HTMLビューア(オフライン)としてWebビューを使用することは可能ですか?

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

} 

} 

私はので、私はこのパスを代わりに使用http://file:///を使用しようとしました:

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

それは私のためにその作業罰金だが、私は持っていますいくつかの重大な問題。ここ

は私の問題です:

  1. は、私が使用しています。このパスは、他のすべてのAndroidデバイスのための作品であるのですか?
  2. 私は使用しているパスに最初に実行されるhtmlファイルを抽出する方法を知らない。
  3. アセットからファイルをロードするにはどうしてですか?
  4. 最初の実行でファイルを抽出するソースコードは何ですか?
  5. htmlの代わりにpdfやdocのような他の形式を使用できますか?ソースコードで何が変わるべきではないのですか?

私に手伝ってくれてありがとうございます。私はこのアイデアをあきらめたり続けるべきですか?

答えて

4

あなただけのソースコードであなたの資産フォルダにファイルを入れ、その後、これを行うことができます:表示PDFについて

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

を:

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

このサンプルでは、​​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(); 
+0

私は完全にこのように動作する完全なアプリを持っていた! – AxelH

+0

ああ、アセットからファイルを読み込むためには、(アセット)の代わりに(android_assets)を追加する必要があります。 –

+0

はい、それは動作するはずです:) –

0

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

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

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

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

+0

私はアンドロイドで新しいです、あなたはコードでそれを示すことができますか? –

関連する問題