Android 获取draw()内的脏区域

Android 获取draw()内的脏区域,android,Android,如果使用dirty rect参数使自定义视图的一部分无效(),如何在draw()方法中获取dirty rect?画布的剪裁矩形不一样-根据我的经验,它通常要大几倍。从传入的画布对象到onDraw方法获取clipRect。这个clipRect(Canvas::getClipBounds)实际上是无效的Rect clipRect有时较大,因为不同的无效区域联合在一起,因此出于性能原因会触发一个事件而不是多个事件。如果脏rect与传递给invalidate()的脏rect不同,这是因为屏幕的另一个视图

如果使用dirty rect参数使自定义视图的一部分无效(),如何在draw()方法中获取dirty rect?画布的剪裁矩形不一样-根据我的经验,它通常要大几倍。

从传入的画布对象到onDraw方法获取clipRect。这个clipRect(Canvas::getClipBounds)实际上是无效的Rect


clipRect有时较大,因为不同的无效区域联合在一起,因此出于性能原因会触发一个事件而不是多个事件。

如果脏rect与传递给invalidate()的脏rect不同,这是因为屏幕的另一个视图或区域也无效。

在这种情况下,没有其他无效。测试非常干净-应用程序可以一直保持稳定,然后我点击屏幕。这会导致重新绘制。不可能有另一个未决的失效。我在这里有同样的经历。getClipRect返回整个视图的边界,而不是我传递给invalidate的小矩形。我认为这个答案不正确-我的示例应用程序设置了一个小矩形,但是Canvas.getClipBounds()不正确始终返回整个视图的边界。根据这一点:似乎使用硬件加速视图将为整个视图设置剪辑边界。但是,仍将仅绘制与剪辑矩形相交的零件。