大きなhtmlファイルがロードされる webview があります。Web ビューはスクロール可能で、ユーザーはスクロールして残りのページを見ることができます。ユーザーがページを下にスクロールすると、ある時点で、ページ全体の画像ではなく、webview (現在ユーザーが見ているもの) のビットマップ画像を取得したいと考えています。webView.capturePicture() が画像を作成できることは知っていますが、ウェブページ全体の画像が表示されます。次のコード スニペットを試してみましたが、ユーザーが何度もページをスクロールしても、html ファイルの開始ページの画像が表示されます。
WebView webView = new WebView(getApplicationContext());
webView.setVerticalScrollBarEnabled(true);
webView.setHorizontalScrollBarEnabled(false);
webView.getSettings().setBuiltInZoomControls(false);
webView.getSettings().setUseWideViewPort(false);
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
webView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM);
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
//pageFinished = true;
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.loadUrl("file://"+Environment.getExternalStorageDirectory() + "/main.html");
ボタンの onClick() では、次のコードを使用して Web ビューのスナップショットを取得しました。
try {
Bitmap bitmap = Bitmap.createBitmap(webView.getWidth(), webView.getHeight(),
Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
webView.draw(canvas);
FileOutputStream out = new FileOutputStream(
Environment.getExternalStorageDirectory()
+ "/out.png");
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); // saving bitmap
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
どんな助けでも大歓迎です。
前もってありがとう、スジ