我正在学习自定义视图并想了解invalidate()
和requestLayout()
.
请参考这个答案及其图表:
invalidate()
告诉 Android 视图的状态发生了变化,需要重新绘制。
requestLayout()
表示视图的大小可能已经改变,需要重新测量,然后重新绘制。
invalidate()
将调用dispatchDraw()
, draw()
,onDraw()
因此它会重新渲染视图。
requestLayout()
另一方面,几乎可以完成从测量到重新渲染的所有工作。
为什么有这么多示例(甚至是TextView
源代码)调用invalidate()
然后requestLayout()
就在下一行?