Here is how one can save an image of a view on the device. Sometimes you need to get the image from an ImageView or simply a complex ViewGroup and save it on the device or do something with it.. here is how to do it.The method to get the image of a view is the following one:
public static Bitmap loadBitmapFromView(View view) {
    // width measure spec
    int widthSpec = View.MeasureSpec.makeMeasureSpec(
        view.getMeasuredWidth(), View.MeasureSpec.EXACTLY);
    // height measure spec
    int heightSpec = View.MeasureSpec.makeMeasureSpec(
        view.getMeasuredHeight(), View.MeasureSpec.EXACTLY);
    // measure the view
    view.measure(widthSpec, heightSpec);
    // set the layout sizes
    view.layout(view.getLeft(), view.getTop(), view.getMeasuredWidth() + view.getLeft(), view.getMeasuredHeight() + view.getTop());
    // create the bitmap
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
    // create a canvas used to get the view's image and draw it on the bitmap
    Canvas c = new Canvas(bitmap);
    // position the image inside the canvas
    c.translate(-view.getScrollX(), -view.getScrollY());
    // get the canvas
    view.draw(c);
    return bitmap;
}
And here is how to use the take view picture method to save the image of the view on the device:
String fileName = String.valueOf(Calendar.getInstance().getTimeInMillis());
// generate the image path
String imagePath = Environment.getExternalStorageDirectory().toString() + File.separator + Â fileName + ".png";
 try {
        Â
   // save the image as png
  FileOutputStream out = new FileOutputStream(imagePath);
  // compress the image to png and pass it to the output stream
  loadBitmapFromView(view).compress(Bitmap.CompressFormat.PNG, 90, out);
  // save the image
  out.flush();
  out.close();
} catch (Exception error) {
   Log.e("Error saving image", error.getMessage());
}
If the view has some custom positioning like Gravity.CENTER or something similar, you would want to call:
view.requestLayout();
This right after you took the screen shot of the view and save it.. This will get the view back to the state it was before, as the Canvas will reset the View’s image.
