onLayout介绍
onLayout(boolean changed, int left, int top, int right, int bottom):分配一个大小和位置给每个子节点。
参数:
- changed:这是View的一个新的大小或位置
- left:左位置,相对于父布局
- top:上位置,相对于父布局
- right:右位置,相对于父布局
- bottom:下位置,相对于父布局
自定义ViewGroup才需要且必须重写该方法,遍历每一个子节点并调用View#layout(int l, int t, int r, int b)把大小和位置分配到子节点,大小:测量得到,位置:通过处理LayoutParams得到。调用requestLayout()请求重新布局。
onSizeChanged介绍
onSizeChanged(int w, int h, int oldw, int oldh):当View的大小发生变化时,这将被调用。如果该View刚刚添加到View层次结构中,则旧值为0。
参数:
- w:View的当前宽度
- h:View的当前高度
- oldw:View的旧宽度
- oldh:View的旧高度
要监听View的大小是否发生改变时重写该方法。
onDraw介绍
onDraw (Canvas canvas):绘制View的内容。
参数:
- canvas:绘制了背景的画布
canvas只是画布,想要绘制内容还需要Paint(用来描述绘图的颜色和样式)、图元(例如:Rect, Path, text, Bitmap)
调用invalidate()强制视图绘制,在非UI线程调用postInvalidate()。