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_width
是wrap_content
的情况下,可能拿不到,则需要调用View.measure
来获得一下。
以上是关于Android View保存为bitmap的主要内容,如果未能解决你的问题,请参考以下文章
android 开发 将view保存为image的实现及将html保存为pdf格式
Android开发:对View DrawingCache的理解