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.