自定义View
自定义view主要有三大步骤:测量,绘制,触摸反馈。
绘制:
重写主体内容的绘制方法onDraw()。
绘制的关键:Canvas,Paint。Canvas对象的DrawXX()可以绘制三角,方形,圆,弧等等图形,ClipXX为裁剪。paint对象存放着绘制的画笔,颜色、大小、是否平滑等信息。
测量:测量的方法是onMeasure()。
从最顶级的root View遍历子View,分别调用各自的onMeasure()方法来保存自己测量的信息。
完全自定义大小信息:1,不用重写super.onMeasure(); 2,得满足父View给的尺寸限制。
触摸反馈:在用户触摸屏幕时会产生一系列触摸事件,按下:ACTION_DOWN、移动:ACTION_MOVE、抬起:ACTION_UP。
每产生一个触摸事件时都会先从最底层的View遍历是否拦截该事件,如果拦截事件则会调用该View的onTouchEvent();
如果没有被拦截,会从最接近用户触摸的view来消费事件:onTouchEvnet返回true。否则一步步递交到上层view处理。
Layout:
onMeasure:1,遍历每一个子View,通知他们各自测量自己的尺寸。 子View的layout_xx信息通过getLayoutParams获取。
2,根据子View的尺寸,计算他们各自的位置信息
3,根据子View的尺寸和文字,保存自己的尺寸。
onLayout:遍历每一个子View,调度Layout()方法。