0

在尝试制作自定义视图的屏幕截图时,我得到了IllegalArgumentException : width and height must be >0. 这是我写的:

bitmap = loadBitmapFromView(v1);//v1 the custom view I want to picture.
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;
}

有异常的那一行:Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
当然屏幕截图代码是在视图显示后执行的,在next_act按钮代码上

4

1 回答 1

0

的宽度和高度LayoutParams可以是常数,例如FILL_PARENT,它们是负数。

要获取视图的测量尺寸,您可以使用:

v.getMeasuredWidth() and v.getMeasuredHeight()

但是,这取决于您所追求的,以及是否已测量视图。

在截取屏幕截图之前等到绘制视图可能更有意义;-) 但是您需要更多地解释您的用例。

于 2013-04-05T17:34:59.427 回答