在Android 4.4中将Web视图转换为图像Web视图无法正常工作

时间:2015-01-22 05:33:33

标签: android webview screenshot android-4.4-kitkat

我有一个使用webview显示D3图表的应用程序。以下是我用于图表的网址示例:http://nvd3.org/livecode/index.html#codemirrorNav

我能够加载图表并拍摄该图表的截图..但是这里android 4.4的问题是无法捕获webview以及透明背景。

这是我的网页浏览

          <WebView
            android:id="@+id/chartView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight=".10"
            android:background="@drawable/chart_bg" >
           </WebView>

我将以下属性应用于网页视图以加载图表

    layoutView.getSettings().setJavaScriptEnabled( true );
    layoutView.requestFocusFromTouch();
    layoutView.setBackgroundColor(Color.TRANSPARENT);
    layoutView.getSettings().setBuiltInZoomControls( true );
    layoutView.getSettings().setLoadWithOverviewMode(true);
    layoutView.getSettings().setUseWideViewPort(true);

这里我将我的webview转换为图像

 private void saveWebView() {

    //Resize the webview to the height of the webpage
    int pageHeight = layoutView.getContentHeight();
    LayoutParams browserParams = layoutView.getLayoutParams();
    layoutView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, pageHeight));

    //Capture the webview as a bitmap
    layoutView.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(layoutView.getDrawingCache());
    layoutView.setDrawingCacheEnabled(false);

    //Create the filename to use
    String randomFilenamepart = String.valueOf(new SecureRandom().nextInt(1000000));
    filename = Environment.getExternalStorageDirectory().toString() + "/Screenshot_" + randomFilenamepart + ".jpg";

    File imageFile = new File(filename);
    //Stream the file out to external storage as a JPEG
    OutputStream fout = null;
    try {
        fout = new FileOutputStream(imageFile);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fout);
        fout.flush();
        fout.close();

        Log.d("debug", "Screenshot taken successfully");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        layoutView.setLayoutParams(browserParams);
    }
}

通过这个我尝试捕获Web视图以及Android 4.3下面的背景,没有问题。但在Android 4.4 kitkat上,我捕获了webview图像,但它没有给出webview的背景。只是它显示黑屏的网页数据(不是我的背景图像)

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我通过另一种方式解决了我的问题。将背景图像设置为Web视图,我将背景图像应用到我的D3图表。并为我的网页视图删除了背景颜色..

以下是代码:

     <WebView
        android:id="@+id/chartView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight=".10" >
       </WebView>

网络视图属性

layoutView.getSettings().setJavaScriptEnabled( true );
layoutView.requestFocusFromTouch();
layoutView.getSettings().setBuiltInZoomControls( true );
layoutView.getSettings().setLoadWithOverviewMode(true);
layoutView.getSettings().setUseWideViewPort(true);

后台我通过HTML(图表输入)

应用
<style>  body { overflow-y:scroll;  background:url(css/date_input_bg.png) no-repeat; } </style>

现在它为我工作..但我仍然很惊讶为什么背景和背景颜色都不适用于Android 4.4,这在以下工作!