0

Webビューで現在のページのスクリーンショットを撮ろうとしていますが、スクリーンショットを撮ると、必要のないアクションバーも撮られます。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));    
}
4

1 に答える 1

2

このために描画キャッシュプロパティを使用できます。

このような :

 View main = findViewById(R.id.view);
Bitmap screenshot;
main.setDrawingCacheEnabled(true);
screenshot = Bitmap.createBitmap(main.getDrawingCache());
main.setDrawingCacheEnabled(false);
于 2013-03-05T14:49:49.363 に答える