主要参数AttributeSet 获取在xml中定义的参数
onMeasure onLayout onDraw
onMeasure 测量宽高->onLayout 根据测量完的数据进行定位->onDraw 给定位好的布局绘制到页面上
ViewGroup中并没有measure()也没有onMeasure() 因为ViewGroup除了测量自身的宽高,还需要测量各个子View的宽高,不同的布局测量方式不同 (例如 LinearLayout跟RelativeLayout等布局),所以直接交由继承者根据自己的需要去复写。但是里面因为子View的测量是相对固定的,所以里面已经提供了基本的measureChildren()以及measureChild()来帮助我们对子View进行测量。
View.java的onLayout方法是空实现:因为子View的位置,是由其父控件的onLayout方法来确定的。onLayout(int l, int t, int r, int b)中的参数l、t、r、b都是相对于其父 控件的位置。自身的mLeft, mTop, mRight, mBottom都是相对于父控件的位置。
1 .绘制背景 2.如果必要的话,保存当前画布(canvas) 3.绘制view的内容 4.绘制子view的内容 5.如果必要的话,绘画边缘重新保存图层 6.画装饰(如滚动条)
viewGroup的onInterceptTouchEvent决定是否拦截控件,返回true,拦截当前事件