2014-03-03 67 views
1

Android應用中導出圖形,我試圖通過這個代碼機器人achartengine:試圖爲圖像拋出異常

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

導出圖作爲位圖對象(我使用achartengine畫)和我調用此方法如:

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

有人可以請幫助?

+0

如果您使用調試器或'Log.d()'顯示'view.getLayoutParams的值()。width'和'view.getLayoutParams()。height',這是什麼節目? – Jerry101

回答

2

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

...佈局參數。這些供應參數於指定應如何將它設置在該視圖 的父。

即這些輸入到佈局計算:

的LayoutParams ...描述了視圖想要多大成爲寬度和高度。對於每個 尺寸,它可以指定一個確切的數字,MATCH_PARENT之一,WRAP_CONTENT

您需要實際查看大小,也就是佈局計算的結果。

如果此視圖已在屏幕上佈局,則view.getWidth()view.getHeight()應返回其實際大小。在這種情況下,調用view.layout(...)可以把顯示在視圖,你應該恢復一個奇怪的狀態,並再次要通過實際大小的信息,而不是佈局PARAMS。

如果這種觀點是不是在屏幕上,然後view.measure(widthMeasureSpec, heightMeasureSpec)應該view.layout(...)之前調用。請閱讀View文檔。

+0

感謝這麼多,@ Jerry101!有效! – user2903200