保存Drawable資源爲Bitmap文件

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章