View下的OnDraw()方法自带一个canvas参数,这样的话,我们不能通过new Canvas(Bitmap bitmap)的形式来获取最终的图像,既然拿不到canvas,那么可以直接把整个view画到bitmap上啊。
public Bitmap convertViewToBitmap(View view){
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
Bitmap.Config.ARGB_8888);
//利用bitmap生成画布
Paint paint = new Paint();
paint.setColor(Color.WHITE);
Canvas canvas = new Canvas(bitmap);
canvas.drawRect(0, 0, bitmap.getWidth(), bitmap.getHeight(), paint);
canvas.drawBitmap(bitmap, 0, 0, paint);
//把view中的内容绘制在画布上
view.draw(canvas);
return bitmap;
}
代码中还顺便重新设置了bitmap的背景为白色。
参考:
//http://www.cnblogs.com/devinzhang/archive/2012/06/05/2536848.html //http://www.aspku.com/kaifa/android/167382.html //https://blog.csdn.net/itchenlin/article/details/51206246