保存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,不知道哪位大神可否知道这是什么原因,还请不吝赐教

猜你喜欢

转载自blog.csdn.net/u014697083/article/details/73112637