android achartengine:尝试导出图形,因为图像抛出异常

时间:2014-03-03 00:13:26

标签: android achartengine

在Android应用程序中,我试图通过此代码将图形(我使用achartengine绘制)导出为Bitmap对象

public static Bitmap loadBitmapFromView(Context context, View view) {

    Bitmap bitmap;

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPurgeable = true;
    options.inInputShareable = true;

    Bitmap dummy = null;
    try {
        dummy = BitmapFactory.decodeStream(context.getAssets().open("icon_add.png"), new Rect(-1,-1,-1,-1), options);
    } catch (IOException e) {
        e.printStackTrace();
    }
     bitmap = Bitmap.createBitmap(view.getLayoutParams().width,
        view.getLayoutParams().height, Bitmap.Config.ARGB_4444);
    Canvas c = new Canvas(bitmap);
    view.layout(0, 0, view.getLayoutParams().width, view.getLayoutParams().height);
    view.draw(c);
    c = null;

    return bitmap;
}

我将此方法称为:

loadBitmapFromView(getApplicationContext(), this.graphView);

其中graphView是GraphicalView类型的对象

但这是抛出异常

java.lang.IllegalArgumentException: width and height must be > 0

在这一行

bitmap = Bitmap.createBitmap(view.getLayoutParams().width,
        view.getLayoutParams().height, Bitmap.Config.ARGB_4444);

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

每个http://developer.android.com/reference/android/view/View.html#getLayoutParams()该方法返回

  

...布局参数。这些供应参数提供给此视图的父级   具体说明如何安排。

即。这些是布局计算的输入:

  

LayoutParams ...描述视图对宽度和高度的要求。对于每一个   维度,它可以指定一个确切的数字,MATCH_PARENT,WRAP_CONTENT

您需要实际的视图大小,即布局计算的结果。

如果此视图已在屏幕上显示,则view.getWidth()view.getHeight()应返回其实际大小。在这种情况下,调用view.layout(...)可能会使显示的视图处于您应该恢复的奇怪状态,并且您希望再次传递实际大小信息,而不是布局参数。

如果屏幕上没有此视图,则应在view.measure(widthMeasureSpec, heightMeasureSpec)之前调用view.layout(...)。请阅读View文档。