Android View的绘制流程(2) -- 定位Layout
上一章说了有关View的一些基本知识,以及测量(Measure),就直奔主题了,有兴趣的小伙伴可以到主页看上一篇文章。
从第一个 Layout()开始看,点进去看源码发现,该方法有四个参数。如下图
可以看到一开始做了个if判断,跳过去先不管,下方是一个位置的赋值不管跳过去,在下方,发现调用了一个setFrame方法,这个方法可以在最上方的流程图中看到,这个setFrame方法是一个隐藏的方法,无法重写,内部通过比对本次的left,top,right,bottom四个值,与上次是否相同,判断自身的位置和大小是否发生改变,如果发生了改变,会调用invalidate请求重新绘制,并记录本次的left,top,right,bottom用与下次比对,如果没发生变化,就不用重新绘制,setFrame方法的源码就不贴了,里面无非就是判断上下左右(left,top,...)四个位置的值是否发生变化,变化就调用invalidate方法请求重新绘制,然后将保存新的位置以便下次比较,然后我们继续往下看,onLayout()方法的源码。截图就不贴,上张图Layout方法中能看到调用Onlayout,在倒数第四行代码。
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...