自定义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()方法。

 

 

posted @ 2018-09-23 17:01  halo-漾  阅读(178)  评论(0编辑  收藏  举报