Search code examples
androidandroid-actionbarscreenshot

Android screenshot of activity with actionbar


I use these lines to take screenshot of my activity:

View toppest = ((ViewGroup) ctx.getWindow().getDecorView().findViewById(android.R.id.content)).getChildAt(0);
toppest.setDrawingCacheEnabled(true);
Bitmap bmap = toppest.getDrawingCache();
Utils.saveBitmapOnSdcard(bmap);
toppest.setDrawingCacheEnabled(false);

Anyway, this screenshot not contain actionbar.

How I can make screenshot with actionBar ?

For information: I use Sherlock actionbar implementation with windowActionBarOverlay option to "true".


Solution

  • I found solution. Need to use ctx.getWindow().getDecorView() View to get full screen bitmap cache.

    Also, there is small detail: screenshot contains empty space for status bar. We skip status bar height with help of Window.ID_ANDROID_CONTENT top margin. Finally, this give full screenhot of activity with same size as we saw it before on our telephone :

      View view = ctx.getWindow().getDecorView();
      view.setDrawingCacheEnabled(true);
    
      Bitmap bmap = view.getDrawingCache();
      Log.i(TAG,"bmap:" + b);
    
    
      int contentViewTop = ctx.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); /* skip status bar in screenshot */
      Storage.shareBitmapInfo = Bitmap.createBitmap(bmap, 0, contentViewTop, bmap.getWidth(), bmap.getHeight() - contentViewTop, null, true);
    
      view.setDrawingCacheEnabled(false);