您的位置:首页 > 移动开发 > Android开发

Android中View转换为Bitmap及getDrawingCache=null的解决方法

2016-06-12 12:06 681 查看
转自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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android