2013-03-05 68 views
0

我想在我的web视图中抓取当前页面的屏幕截图,但是当我做屏幕截图时,它正在操作栏中以及我不想要的。我只是想获得网络视图。这可能吗 ?Android没有操作的web视图的屏幕截图吧

私人无效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));  
} 

回答

2

可以使用绘图缓存属性用于此。

这样的:

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

感谢您的答复。有什么机会可以让我稍微推动一下? – cmhdev 2013-03-05 15:03:26

+0

谢谢你的帮助! – cmhdev 2013-03-05 18:58:24