转自http://www.cnblogs.com/devinzhang/archive/2012/06/05/2536848.html
注意
获取ImageView的背景图片使用getDrawableCache方法,不要使用getDrawable方法,后者获取不到图片的.
1.在调用imageView.getDrawableCache()之前一定要先调用imageView.setDrawingCacheEnabled(true)方法,否则会出现空指针异常
2.在使用getDrawableCache()方法获取Bitmap之后,一定要调用setDrawingCacheEnable(false)方法,以清除画图缓冲区,不然下一次获取的图片还是上一次的
view.setDrawingCacheEnabled(true);
view.buildDrawingCache(); //启用DrawingCache并创建位图
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache()); //创建一个DrawingCache的拷贝,因为DrawingCache得到的位图在禁用后会被回收
view.setDrawingCacheEnabled(false); //禁用DrawingCahce否则会影响性能
方法
public static Bitmap convertViewToBitmap(View view) {
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
return bitmap;
}
示例
ImageView iv = (ImageView) findViewById(R.id.imageView1);
ImageView iv2 = (ImageView) findViewById(R.id.imageView2);
iv2.setImageBitmap(convertViewToBitmap(iv));