2013-03-05 49 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