2011-08-14 11 views
1

私はWebViewのコンテンツのスクリーンショットを撮ろうとしています。私はビットマップを作成し、次にこのビットマップからキャンバスを作成し、次にonPageFinished()(WebChromeClientからのコールバックです)内にメソッドdrawPage(canvas)を呼び出しますが、onPageFinished()の中でwebViewはまだコンテンツをロードしていません。最初に黒いページが表示され、前のページが表示されます(前のページが2回目に呼び出されたときに、webViewにページが読み込まれるためです)。どうすればこの問題に対処できますか?私は少し時間をかけてハドラーを使ってそれを解決することができますが、これを行うより良い方法があるはずです。 ありがとうございます。screenshot from webview

答えて

0

私はこの問題を理解しているとは思えませんが、ページをロードしているWebViewでイベントをトリガーする方法を尋ねていますか? WebViewクライアントを作成してonPageCompleted()をオーバーライドできますか?

private WebViewClient viewClient { 
    @Override 
    public boolean onPageFinished(WebView view, String url) { 
     //here you can run your Bitmap creating code 
     return true; 
    } 
} 
YourWebView.setWebViewClient(viewClient); 

これはあなたの探しているものですか?

+0

私がonPageFinished()メソッド内でスクリーンショットを撮ると、同じWebviewに別のページを読み込んでスクリーンショットを撮るときに空白のページが表示されます(webviewには前のページが残っているため) 。私は最後にロードしたページがWebビューで表示された瞬間を探しています。 – Ving

+0

私はあなたが遅れてそれを試していると言いましたが、あなたの権利は間違っています。なぜスクリーンショットを撮ろうとしているのか尋ねることはできますか?それはあなたがしようとしていることを達成する最良の方法ではないかもしれません。 onPageFinished()で "Loaded"ブール値をtrueに設定してから、WebViewのonDraw()メソッドでLoadedがtrueであるかどうかを確認することができます。 – Woody