2010-10-06 66 views
2

如果我用dirty rect參數使我的自定義視圖的一部分無效(),如何獲取draw()方法內的髒區域?畫布的裁剪矩是不一樣的 - 根據我的經驗,它通常要大幾倍。獲取內部髒區域draw()

回答

2

從傳遞到Canvas對象中的clipRect獲取onDraw方法。這個clipRect(Canvas :: getClipBounds)實際上是無效的Rect。

clipRect有時候會更大,因爲不同的無效區域會被聯合在一起,所以一個事件會被觸發而不是出於性能原因而觸發多個事件。

+0

在這種特殊情況下,沒有其他無效。測試非常乾淨 - 只要我願意,應用程序就會很緊張,然後我點擊屏幕。這會導致重繪。不可能有另一個待決失效。 – 2010-10-06 15:39:00

+1

我在這裏有相同的經歷。 getClipRect返回整個視圖的邊界,而不是我傳遞給無效的小矩形。 – 2014-08-25 20:34:18

+0

我不認爲這個答案是正確的 - 我的示例應用程序設置了一個小矩形,但Canvas.getClipBounds()總是返回整個視圖的邊界。 – greg7gkb 2016-03-19 03:13:09

3

如果髒矩形與傳遞給invalidate()的不一致,那是因爲屏幕的另一個視圖或區域也被無效。