【发布时间】:2016-05-18 16:33:35
【问题描述】:
我正在学习自定义视图并想了解 invalidate() 和 requestLayout()。
请参考这个答案及其图表:
invalidate() 告诉 Android 视图的状态已经改变,需要重新绘制。
requestLayout() 表示视图的大小可能已经改变,需要重新测量,然后重新绘制。
invalidate() 将调用 dispatchDraw()、draw() 和 onDraw(),因此它会重新渲染视图。
另一方面,requestLayout() 几乎可以完成从测量到重新渲染的所有工作。
为什么有这么多示例(甚至是TextView 源代码)调用invalidate(),然后在下一行调用requestLayout()?
【问题讨论】:
标签: android android-view android-view-invalidate