android layout,measure,draw资料收集
来源:互联网 发布:百知java培训 编辑:程序博客网 时间:2024/04/28 16:30
写在前面,本文对网络中一些关注标题的文章进行了下收集总结,旨在知道每个函数的意义,特别是requestLayout和invalidate这两个比较常用函数的区别。
首先放一张大神图
感觉不需要过多解释了。
然后看过一些相关代码的都知道有个ViewRootImpl的玩意儿,然后invalidate或者requestLayout都是发消息,然后最终触发一个超级长的函数:performTraversals。许多分析都很长,估计都看晕了,这个函数简短来说就是干了这么些活:
收集了两张图,表达了同一个意思。也不多说了。
在之后收集的文章中,有人提问为什么TextView需要先invalidate然后再requestLayout,requestLayout不是包含了invalidate吗,或者在addView的时候为什么requestLayout会调用两次(外部调一遍,子函数又调一遍)
首先要知道上次函数都是通过发消息的方式执行,而不是直接进行的。然后最终都是通过performTravesal函数来执行的。所以在发消息的时候通过标志位的设置来决定最后需不需要刷新之类的。再来就是父容器的标志位可以阻断子节点的刷新,因为父容器都刷了,子节点必然会刷新,所以调两次之类的其实可以省了一些消息发送。具体看我最后的参考资料吧
参考资料:
Usage of forceLayout(), requestLayout() and invalidate()
Android requestLayout 和 invalidate
以下两篇比较长,在讲最复杂的view绘制流程,楼主太懒没怎么看
Android中View绘制流程以及invalidate()等相关方法分析
Android应用层View绘制流程与源码分析
这两篇主要是讲我刚才说的问题,讲的比我清楚。我懒得码字
addView 源码调用顺序的迷惑
调用ViewGroup的addView之后,是怎样显示出来的?
0 0
- android layout,measure,draw资料收集
- Android View绘制:measure,layout和draw
- measure layout draw
- Android布局文件绘制原理学习总结 -- measure/layout/draw
- Android自定义view之measure、layout、draw三大流程
- Android视图工作机制之measure、layout、draw
- Android自定义view浅谈(二) measure layout 和draw
- measure,layout,draw的相关方法
- View工作原理(measure、layout、draw)
- 自定义View之measure、layout、draw
- View的工作原理:measure、layout、draw
- View的measure, layout, draw整个过程
- Android进阶——Android视图工作机制之measure、layout、draw
- Android进阶系列0—View的工作流程:measure,layout,draw小结
- Android应用程序窗口Activity的测量Measure布局Layout和绘制Draw过程分析
- Android应用层View绘制流程之measure,layout,draw三步曲
- android view的讲解 之 view的工作流程(measure,layout,draw)(二)
- Android探索之旅(第十六篇)Android APP启动过程分析(1)——Measure、Layout、Draw
- iperf命令
- jQuery
- queue,priority_queue
- C语言typedef的用法
- HDU 4813-Hard Code-字符串
- android layout,measure,draw资料收集
- java事务学习笔记(八)--分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)
- GCD 小结
- 母牛的故事
- js史上最简单的数组合并去重排序
- iOS开发学习笔记——表格自定义单元格(UITableViewCll)
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- hdu 4417 树状数组离线处理
- C#日期格式的转换方法