1

我正在尝试使 android 视图部分无效。我使用 View.invalidate( l, t, b, r ) 并且它似乎正确地使垂直(顶部和底部)值无效,但是,无论我使用哪个左右值,它都会使整个视图无效。

例如,我的视图是灰色的。我希望使绿色区域无效,但是,它使绿色和红色区域无效。它总是跨越整个视图的整个水平方向。我试图输入诸如 View.invalidate( 0, 0, 50, 50 ) 之类的小值,但它仍然会导致这种行为。

图片链接(没有足够的代表来发布图片)

为什么会这样?

4

1 回答 1

1

行为随着硬件加速而改变,这是 Honeycomb 之后的默认设置。现在,当您invalidate()的视图提供脏区域时,未设置剪辑绑定 ( canvas.getClipBounds())。但是,只有与脏区相交的对象才会被重绘。

请参阅渲染管道的作者 Romain Guy 的这个答案以供参考。

于 2015-07-18T21:30:54.327 回答