自定义view你需要知道的

自定义view的时候可能需要重写的方法。

前面我已经跟大家分享了自定义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的可见性发生改变时触发的方法。

任磊_Coder wechat
关注博主是一种态度,评论博主是一种欣赏。
坚持原创技术分享,您的支持将鼓励我继续创作!