摘要:
相比较onMeasure ,layout过程要简单多了,正如layout的中文意思“布局”中表达的一样,layout的过程就是确定View在屏幕上显示的具体位置,在代码中就是设置其成员变量mLeft,mTop,mRight,mBottom的值,这几个值构成的矩形区域就是该View显示的位置,不过这里的具体位置都是相对与父视图的位置。 与onMeasure过程类似,ViewGroup在onLayout函数中通过调用其children的layout函数来设置子视图相对与父视图中的位置,具体位置由函数layout的参数决定,当我们继承ViewGroup时必须重载onLayout函数(ViewGrou 阅读全文
摘要:
整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为根据之前设置的状态,判断是否需要重新计算视图大小(measure)、是否重新需要安置视图的位置(layout)、以及是否需要重绘(draw),其框架过程如下:步骤其实为host.layout()接下来温习一下整个View树的结构,对每个具体View对象的操作,其实就是个递归的实现。流程一: mesarue()过程主要作用:为整个View树计算实际的大小,即设置实际的高(对应属性:mMeasuredHeight)和宽(对应属性:mMeasureWidth),每 阅读全文
摘要:
在继承ViewGroup时,必须重写onLayout()方法onLayout:when this view should assign a size and position toall of its childrena. 属于ViewGroup的方法,用来为当前ViewGroup的子元素的位置和大小(大小是layout分配给本元素的显示空间大小,与本元素的大小可能不一样)b. View的layout方法体中会调用onLayout调试的时候会发现自定义的view,其中onLayout()方法会被调用两次,这个onLayout是由父View触发当前View layout方法的时候, 的一个cal 阅读全文