赞
踩
android.view.View#buildDrawingCache(boolean)
android.view.View#getDrawingCache(boolean)
这2个方法配合使用使用,可以将View转换为Bitmap
利用View自身的draw方法,再结合Matrix将自己的整体或者局部绘制到以Bitmap为画板的Canvas上,代码如下
/** * 高效的获取View的裁剪区 * @param view 需要处理的View * @param crop 裁剪区域 * @param downscaleFactor 缩放参数 * @return */ public static Bitmap getDownscaledBitmapForView(View view, Rect crop, float downscaleFactor) { View screenView = view; int width = (int) (crop.width() * downscaleFactor); int height = (int) (crop.height() * downscaleFactor); float dx = -crop.left * downscaleFactor; float dy = -crop.top * downscaleFactor; if (width * height <= 0) { return null; } Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);//准备图片 Canvas canvas = new Canvas(bitmap);//将bitmap作为绘制画布 Matrix matrix = new Matrix(); matrix.preScale(downscaleFactor, downscaleFactor); matrix.postTranslate(dx, dy); canvas.setMatrix(matrix);//设置matrix screenView.draw(canvas);//讲View特定的区域绘制到这个canvas(bitmap)上去, return bitmap;//得到最新的画布 }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。