1

大きな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();
    }

どんな助けでも大歓迎です。

前もってありがとう、スジ

4

0 に答える 0