我有一个 webview ,它会加载一个大的 html 文件。webview 是可滚动的,用户可以通过滚动查看其余页面。当用户向下滚动页面时,有时我想获取 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() 中,我使用以下代码获取 webview 的快照:
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();
}
任何帮助表示赞赏。
在此先感谢, 苏吉