将webview的当前显示捕获到位图

时间:2012-12-10 12:53:14

标签: android

我有一个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");

在Button的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();
    }

感谢任何帮助。

提前致谢, 筋

0 个答案:

没有答案