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

时间:2011-10-14 18:09:32

标签: java android

我希望采用视图层次结构并将其转换为位图。使用view.getDrawingCache()完全符合我的要求,但如果我在绘制视图之前尝试这样做,则无法正常工作。是否有另一个函数可以执行相同的操作但在实际绘制之前?我想创建视图并将其转换为位图以显示和丢弃实际视图。如果有办法强制绘制可能也有效的视图。有什么想法吗?

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

    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;
    }

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

1 个答案:

答案 0 :(得分:3)

好吧我明白了。您可以使用此代码,稍加修改this 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.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;
    }