前面我已经跟大家分享了自定义view概述,今天跟大家分享一下官方文档中关于自定义view可能重写到的方法。官方文档
概述
实现自定义view,我们通常会去重写一些系统会在所有view中调用到的标准方法。事实上,我们不用重写所有的方法,甚至只重写onDraw(android.graphics.Canvas)方法就可以了。
创建
构造方法
构造方法有两种形式,一种是在view在代码中创建的时候调用,另一种是view从布局文件中加载的时候调用。第二种方式需要去解析在布局文件中定义的属性。
onFinishInflate()
回调方法,当view和他的子view已经从布局文件中加载完成的时候调用。
布局
onMeasure(int, int)
用来计算并且确定此view和他的子view需要的尺寸。
onLayout(boolean, int, int, int, int)
当这个view需要分配他的子view的位置和占用空间的时候调用。
onSizeChanged(int, int, int, int)
当这个view的尺寸已经发生改变的时候调用。
绘制
onDraw(android.graphics.Canvas)
当view需要渲染他的内容的时候调用。
事件处理
onKeyDown(int, KeyEvent)
当按下某个按键的时候触发,比如返回键。
onKeyUp(int, KeyEvent)
当离开按键的时候触发。
onTrackballEvent(MotionEvent)
当发生轨迹球事件时触发。
onTouchEvent(MotionEvent)
发生触屏事件的时候触发。
焦点
onFocusChanged(boolean, int, android.graphics.Rect)
当view获得或者失去焦点时触发。
onWindowFocusChanged(boolean)
当包含这个view的window得到或者失去焦点时触发。
依附
onAttachedToWindow()
当这个view依附到window中时触发。
onDetachedFromWindow()
当这个view从依附的window中分离时触发。
onWindowVisibilityChanged(int)
当包含该view的window的可见性发生改变时触发的方法。