我已經看過成畫布源代碼,由於Android 4.0.1的,並且其計算方法如下:
/**
* Retrieve the clip bounds, returning true if they are non-empty.
*
* @param bounds Return the clip bounds here. If it is null, ignore it but
* still return true if the current clip is non-empty.
* @return true if the current clip is non-empty.
*/
public boolean getClipBounds(Rect bounds) {
return native_getClipBounds(mNativeCanvas, bounds);
}
/**
* Retrieve the clip bounds.
*
* @return the clip bounds, or [0, 0, 0, 0] if the clip is empty.
*/
public final Rect getClipBounds() {
Rect r = new Rect();
getClipBounds(r);
return r;
}
所以,回答你的問題,getClipBounds(Rect bounds)將使您免於創建一個對象,但getClipBounds()實際上每次調用時都會創建一個新的Rect()對象。
什麼?我不明白。正如我在我的問題中寫的,有兩種不同的方法調用。一個確實採取了Rect,一個沒有。我在問那個沒有的人。 – yydl 2012-04-05 22:26:06
不便之處,但爲了避免每次調用方法時創建Rect對象,您應該像Luis所說的那樣使用此方法getClipBounds(Rect bounds)。 – appdroid 2012-04-05 22:36:46