文章目录
-
- View.invalidate操作
- View.requestLayout操作
- ViewGroup.addView操作
- 小结
View.invalidate操作
1.从下向上,利用链表结构传递dirty,dirty是需要重新渲染的区域
从调用invalidate的View对象,直到树顶的ViewRootImpl对象
涉及到的API
View.invalidate()
ViewGroup.invalidateChildInParent()
ViewRootImpl.invalidateChildInParent()
2.从上到下,利用树状结构完成ViewTree的遍历过程:先measure, 再layout,最后draw
ViewRootImpl.scheduleTraversals()
保证在主线程中调用ViewRootImpl.performTraversals()
ViewRootImpl.performTraversals()
调用mView.measure()方法
调用mView.layout()方法