保存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,不知道哪位大神可否知道這是什麼原因,還請不吝賜教