Android没有操作栏的webview截图

时间:2013-03-05 14:47:30

标签: android

我正在尝试在我的网页浏览中拍摄当前页面的屏幕截图,但是当我进行屏幕截图时,它也会进入操作栏,这是我不想要的。我正在尝试获取Web视图。这可能吗?

private void goScreenShot(){

    // Get device dimmensions
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);

// Get root view
    View view = mWebView.getRootView();
    // Create the bitmap to use to draw the screenshot
    final Bitmap bitmap = Bitmap.createBitmap(size.x, size.y, Bitmap.Config.ARGB_8888);
    final Canvas canvas = new Canvas(bitmap);

    // Get current theme to know which background to use
    final Activity activity = this;
    final Theme theme = activity.getTheme();
    final TypedArray ta = theme
        .obtainStyledAttributes(new int[] { android.R.attr.windowBackground });
    final int res = ta.getResourceId(0, 0);
    final Drawable background = activity.getResources().getDrawable(res);

    // Draw background
    background.draw(canvas);

    // Draw views
    view.draw(canvas);

    // Save the screenshot to the file system
    FileOutputStream fos = null;
    try {
        final File sddir = new File(SCREENSHOTS_LOCATIONS);
        if (!sddir.exists()) {
            sddir.mkdirs();
        }
        //fos = new FileOutputStream(SCREENSHOTS_LOCATIONS
          //      + System.currentTimeMillis() + ".jpg");

        fos = new FileOutputStream(SCREENSHOTS_LOCATIONS
                      + "Screenshot" + ".jpg");
        Log.d("screenshot location", SCREENSHOTS_LOCATIONS.toString());
        if (fos != null) {
            if (!bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos)) {
                Log.d("ScreenShot", "Compress/Write failed");
            }
            fos.flush();
            fos.close();

        }

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    startActivity(new Intent(WebViewActivity.this, ScreenViewer.class));    
}

1 个答案:

答案 0 :(得分:2)

您可以使用绘图缓存属性。

像这样:

 View main = findViewById(R.id.view);
Bitmap screenshot;
main.setDrawingCacheEnabled(true);
screenshot = Bitmap.createBitmap(main.getDrawingCache());
main.setDrawingCacheEnabled(false);