View 里我们常用的方法

  1. Creation(创建)
  • Constructors(构造函数):有一种形式的构造函数会在View在代码中被创建时调用,另一种形式的构造函数会在View从layout加载出来时被调用。
    第二种形式的构造函数会解析和应用layout文件中定义的任何属性。
  • onFinishInflate():该方法当View及其子View从XML文件中加载完成后会被调用。
  1. Layout(布局)
  • onMeasure(int, int):该方法在计算当前View及其所有子View尺寸大小需求时会被调用。
  • onLayout(boolean, int, int, int, int):该方法在当前View需要为其子View分配尺寸和位置时会被调用。
  • onSizeChanged(int, int, int, int):该方法在当前View尺寸变化时被调用。
  1. Drawing(绘制)
  • onDraw(android.graphics.Canvas):该方法在当前View需要呈现其内容时被调用。
  1. Event processing(事件处理)
  • onKeyDown(int, KeyEvent):该方法在一个物理按键事件发生时被调用。
  • onKeyUp(int, KeyEvent):该方法在一个物理按键弹起事件发生时被调用。
  • onTrackballEvent(MotionEvent):该方法在一个轨迹球运动事件发生时被调用。
  • onTouchEvent(MotionEvent):该方法在一个触摸屏幕运动事件发生时被调用。
  1. Focus(聚焦)
  • onFocusChanged(boolean, int, android.graphics.Rect):该方法在当前View获得或失去焦点时被调用。
  • onWindowFocusChanged(boolean):该方法在包含当前View的window获得或失去焦点时被调用。
  1. Attaching(附上)
  • onAttachedToWindow():该方法在当前View被附到一个window上时被调用。
  • onDetachedFromWindow():该方法在当前View从一个window上分离时被调用。
  • onVisibilityChanged(View, int):该方法在当前View或其祖先的可见性改变时被调用。
  • onWindowVisibilityChanged(int):该方法在包含当前View的window可见性改变时被调用。

首先我们看构造方法,一般我们主要用到的方法有前三种,然后前两种通过this(),去调用第三个构造参数,然后再第三个构造参数里面实现styleable的一些自定义的属性

然后是onFinishInflate这个方法,这个方法最后如果通过new 的方式是不会被调用的,如果是一个ViewGroup,只有它和它的子View完全被加载实例化了之后才会回调该ViewGroup的这个方法 

 

View的关键生命周期为:

[改变可见性] --> 构造View() --> onFinishInflate() --> onAttachedToWindow() --> onMeasure() --> onSizeChanged() --> onLayout() --> onDraw() --> onDetackedFromWindow()