我试图部分地使Android视图无效。我使用View.invalidate(l,t,b,r),它似乎正确地使垂直(顶部和底部)值无效,但是,无论我使用哪个左右值,它都会使整个视图无效。
例如,我的观点是灰色的。我想使绿色区域无效,但是它会使绿色区域和红色区域无效。它始终横跨整个视图横跨整个水平方向。我试图放置一些小值,如View.invalidate(0,0,50,50),它仍会导致此行为。
Image Link (not enough rep to post images)
为什么会这样?
答案 0 :(得分:1)
行为随硬件加速而改变,这是Honeycomb之后的默认值。现在,当您invalidate()
提供脏区域的视图时,未设置剪辑边界(canvas.getClipBounds()
)。但是,只会重绘与脏区域相交的对象。
请参阅渲染管道作者Romain Guy的参考this回答。