1

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

任何帮助表示赞赏。

在此先感谢, 苏吉

4

0 回答 0