2017-09-29 12 views
0

WebViewからスクリーンショットを作成する必要があります。または、「HTMLをビットマップに変換する」と言うことができます。AndroidがWebViewから画像をキャプチャできない、view.postDelayが実行されていない

私はこの作業に問題があります。 view.postDelayd(新しいRunnableを(){...私はRunnableを、Bitmap.createBitmap(...)例外を与えるを使用しない場合は、私のキャプチャ画像は

private void Main { 
    WebView webView = new WebView(this.context); //init WebView 
    saveHtmlImage(webView); //running method for capture picture 
} 

private void saveHtmlImage(final WebView webView){ 
    webView.setWebViewClient(new WebViewClient() { 

     public void onPageFinished(WebView view, String url) { 
      view.postDelayed(new Runnable() { //trouble here 
       @Override 
       public void run() { 
        Picture picture = webView.capturePicture(); 
        Bitmap b = Bitmap.createBitmap(picture.getWidth(), 
          picture.getHeight(), Bitmap.Config.ARGB_8888); 
        Canvas c = new Canvas(b); 
        picture.draw(c); 
       } 
      }, 100); 
     } 
    }); 

    //set HTML code for WebView 
    webView.loadDataWithBaseURL(null, "<TABLE border=\"1\"\n" + 
      "   summary=\"This table gives some statistics about fruit\n" + 
      "     flies: average height and weight, and percentage\n" + 
      "     with red eyes (for both males and females).\">\n" + 
      "<CAPTION><EM>A test table with merged cells</EM></CAPTION>\n" + 
      "<TR><TH rowspan=\"2\"><TH colspan=\"2\">Average\n" + 
      " <TH rowspan=\"2\">Red<BR>eyes\n" + 
      "<TR><TH>height<TH>weight\n" + 
      "<TR><TH>Males<TD>1.9<TD>0.003<TD>40%\n" + 
      "<TR><TH>Females<TD>1.7<TD>0.002<TD>43%\n" + 
      "</TABLE>", "text/html", "UTF-8", null); 
} 

で新しいスレッドを作成しないでください - java.lang.IllegalArgumentExceptionが:私は

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 

intead

view.postDelayd(new Runnable() { 
を使用していた場合、幅と高さが> 0

でなければなりません

方法

webView.capturePicture(); 

復帰空のスクリーンショットが、正しい幅と高さ

で私を助けてください。

私が間違っているとか、またはHTMLコードをビットマップイメージに変換できるコードの別の例を教えてください。

ご返信ありがとうございます。

答えて

0

フルスクリーンに合わせて、標準のスクリーンショットを作成し、ビットマップに変換するだけです。例が必要なら私に知らせてください。

+0

Activityでwebviewを使用していないため、全画面表示できません。これだけのinitです。 'code' WebView webView = new WebView(context); 'code' – Yuriy

+0

どこからこのコードをやっていますか?あなたのアプリケーションの中に正しいですか?あなたのアプリケーションにいるなら、コンテキストがあります。あなたがスクリーンに要素を追加することをコントロールしているなら、それらを確実にスクリーンショットすることができます。 – Sam

関連する問題