Android笔记之View截图(View生成bitmap)

5,123 阅读1分钟

一、(Bitmap)view?

View截图,简单来说就是把view转换成bitmap,这里有两种方法。

1.1 drawingcache

我们只说怎么用,是什么和为什么有兴趣去学习一个。

private static Bitmap viewToBitmap(View v) {
    v.setDrawingCacheEnabled(true);
    v.buildDrawingCache();
    Bitmap screenshot = v.getDrawingCache();
    v.setDrawingCacheEnabled(false);
    return screenshot;
}

简单来说就是获取view的DrawingCache,记得用完之后关闭(setDrawingCacheEnabled(false))。不过注意这种方法要求view已经经过layout在界面上显示了。

1.2 canvas绘制

这种思路就直接了,先看代码:

private static Bitmap viewToBitmap(View v) {
        Bitmap screenshot;
        screenshot = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_4444);
        Canvas canvas = new Canvas(screenshot);
        v.draw(canvas);
        return screenshot;
    }

创建一个和view等宽高的bitmap,ARGB_4444指的是bitmap的像素类型。

ARGB_8888:四个通道都是8位,每个像素占用4个字节,图片质量是最高的,但是占用的内存也是最大的;
ARGB_4444:四个通道都是4位,每个像素占用2个字节,图片的失真比较严重;
RGB_565:没有A通道,每个像素占用2个字节,图片失真小,但是没有透明度;
ALPHA_8:只有A通道,每个像素占用1个字节大大小,只有透明度,没有颜色值。

之后就是创建canvas,通过View.draw()方法绘制了。

//作为Android开发的初学者,如果我有错误的地方或者不足的话欢迎大家指正。希望与大家一同进步。