Android View保存为bitmap

Posted 长江很多号

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android View保存为bitmap相关的知识,希望对你有一定的参考价值。

如果想把android的某个view保存为bitmap,非常简单。

基本流程是,先拿到view的宽高,然后创建一个bitmap和一个canvas,canvas使用bitmap作为buffer。然后,调用view.draw(canvas),把view的内容绘制到canvas上。

方法如下:

public static Bitmap saveViewAsBitmap(View view) 
    int width = view.getWidth();
    int height = view.getHeight();
    if (width <= 0 || height <= 0) 
        DebugLog.i(TAG, "size is unknown, maybe wrap_content, will measure");
        int specSize = View.MeasureSpec.makeMeasureSpec(0 /* any */, View.MeasureSpec.UNSPECIFIED);
        view.measure(specSize, specSize);
        width = view.getMeasuredWidth();
        height = view.getMeasuredHeight();
    
    DebugLog.i(TAG, "view size is w " + width + " h " + height);
    if (width <= 0 || height <= 0) 
        DebugLog.e(TAG, "invalid size, do nothing, return null");
        return null;
    

    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    if(view.getRight() <= 0 || view.getBottom() <= 0) 
        view.layout(0, 0, width, height);
        view.draw(canvas);
     else 
        view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
        view.draw(canvas);
    

    return bitmap;

需要注意的是,如果拿不到view的宽高,例如view的layout_widthwrap_content的情况下,可能拿不到,则需要调用View.measure来获得一下。

以上是关于Android View保存为bitmap的主要内容,如果未能解决你的问题,请参考以下文章

Android 怎么把imageview 转为Bitmap

Android View转换为Bitmap,实现截屏效果

android 开发 将view保存为image的实现及将html保存为pdf格式

Android开发:对View DrawingCache的理解

Android自定义View画图的步骤及关于CanvasBitmapPaint的关系

Android 获取View的Bitmap