为什么部分无效跨越整个视图?

时间:2015-07-18 20:16:28

标签: android android-view android-view-invalidate

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

例如,我的观点是灰色的。我想使绿色区域无效,但是它会使绿色区域和红色区域无效。它始终横跨整个视图横跨整个水平方向。我试图放置一些小值,如View.invalidate(0,0,50,50),它仍会导致此行为。

Image Link (not enough rep to post images)

为什么会这样?

1 个答案:

答案 0 :(得分:1)

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

请参阅渲染管道作者Romain Guy的参考this回答。