标签:ondraw boolean params 分类 amp 自定义 获取 控件 The
view 与 ViewGroup绘制流程基本相同,在ViewGroup中不仅要绘制自己,还需绘制其中的子控件,而view只需绘制自己。
view绘制流程:测量,布局,绘制
MeasureSpec 前2位代表模式,后30位代表数值(size)
模式分类:
onLayout() 是实现所有子控件布局的函数 那么,关于自己的layout呢? 它自己是由自己的父控件完成的 ,,,在layout中使用setFrame设置自己的位置, 设置完再调onLayout来设置自己的子控件
onLayout()中使用child.layout(0, top, chidWidth, top+ chidHeight) 来确定子控件的位置
getWidth() 和 getMeasureWidth() 的区别:
如果想要自定义的ViewGroup可以支持layout_margin参数,则自定义的ViewGroup类必须重写generateLayoutParams() && generateDefaultLayoutParams函数,并在该函数返回一个ViewGroup.MarginLayoutParams派生类对象。
为什么要重写generateLayoutParams()?????
因为默认的generateLayoutParams() 只会提取layout_width 和 layout_height 的值, 只有MarginLayoutParams()函数才具有提取margin值的能力。因此重写generateLayoutParams() 来返回 MarginLayoutParams() 获取margin值。
标签:ondraw boolean params 分类 amp 自定义 获取 控件 The
原文地址:https://www.cnblogs.com/acg88688/p/11870590.html