Android自定义控件

  • setContentView()方法的理解:设置id为content的布局(FrameLayout)的子view,即我们的布局添加到该帧布局下
  • 自定义view的生命周期
    • 创建:两种创建方式-对应两种构造方法
      onFinishInflate():当布局加载完成的时候回调
      onattachedtowindow():当此view附加到窗体上时回调该方法
    • 测量
      • measure():不可重写,由系统去测量该view的宽高,测量完毕后调用onMeasure()
      • onMeasure():可以重写,系统在这里保存测量的宽高,可以在这里获取测量的宽高 getMeasuredWidth(), getMeasuredHeight()
    • 布局
      • 确定view的坐标
        下面是一个自定义view的生命周期相关的方法:、
        第一次测量的时候,宽高为零,调用layout确定位置,发现changed(宽高由变化),所以重新测量,重新布局
Android自定义控件_第1张图片
0CWBEWC_R7R3RZMUP2NLY5M.png
  • 绘制:draw()和onDraw()
  • 强制重绘:
    invalidate():只能在主线程执行(会执行draw()和onDraw())
    postInvalidate():可以在主线程或分线程执行
  • 事件处理
    事件分发:
    事件处理:
    事件消费:
    事件拦截:
    反拦截:
  • 自定义view的死亡:activity销毁或者手动从父视图中移除

你可能感兴趣的:(Android自定义控件)