Android在绘制前获取视图的位图?

我希望采用视图层次结构并将其转换为位图。 使用view.getDrawingCache()正是我想要它做的,但是如果我在绘制视图之前尝试它,它将无法工作。 是否有另一个函数可以做同样的事情,但在实际绘制之前? 我想创建视图并将其转换为位图以显示和丢弃实际视图。 如果有办法强制绘制可能也有效的视图。 有任何想法吗?

我在之前的post中找到了这个:

public static Bitmap loadBitmapFromView(View v) { Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); v.draw(c); return b; } 

这看起来很有希望但是当我使用它时,我得到的是一个半透明的黑盒子。

好吧我明白了。 你可以使用这个代码,稍微修改一下这篇文章 。

  public static Bitmap loadBitmapFromView(View v) { Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); v.measure(v.getLayoutParams().width, v.getLayoutParams().height); //Change from original post v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); v.draw(c); return b; }