保存Drawable资源为bitmap文件
在实际开发中有时候会需要保存项目的drawable文件为bitmap文件
下面的代码是网上能找到的
public Bitmap convertViewToBitmap(View view){
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
return bitmap;
}
代码很简单,但是这个代码是可以将布局文件中的view转成bitmap文件的,但是有一个问题就是,如果这个布局文件是通过代码生成的,那么这个转换成bitmap时,这个bitmap就是null,所以往往还需要对这个布局进行重新测量一下,才能得到这个bitmap
下面是更正后的代码
public static Bitmap convertViewToBitmap(View view) {
view.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(),
view.getMeasuredHeight());
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
return bitmap;
}
这里有一个问题就是,布局的测量模式只能是UNSPECIFIED
,笔者亲测过,如果是降测量模式改为AT_MOST
或者是EXACTLY
都不行,得到的bitmap依然是null,不知道哪位大神可否知道这是什么原因,还请不吝赐教