HenCoder Android 自定义 View 1-5: 绘制顺序
绘制顺序
1 super.onDraw() 前 or 后?
2 dispatchDraw():绘制子 View 的方法
onDraw() 只是负责自身主体内容绘制的。
每个 View 和 ViewGroup 都会先调用 onDraw() 方法来绘制主体,再调用 dispatchDraw() 方法来绘制子 View。
注:虽然 View 和 ViewGroup 都有 dispatchDraw() 方法,不过由于 View 是没有子 View 的,所以一般来说 dispatchDraw() 这个方法只对 ViewGroup(以及它的子类)有意义。
3 绘制过程简述
1.背景(drawBackground())private方法,不能自定义
2.主体(onDraw())
3.子 View(dispatchDraw())
4.滑动边缘渐变和滑动条(onDrawForeground())API 23
5.前景(onDrawForeground())API 23
4 draw() 总调度方法
public void draw(Canvas canvas) {
...
drawBackground(Canvas); // 绘制背景(不能重写)
onDraw(Canvas); // 绘制主体
dispatchDraw(Canvas); // 绘制子 View
onDrawForeground(Canvas); // 绘制滑动相关和前景
...
}
1.写在 super.draw() 的下面
那么这段代码会在其他所有绘制完成之后再执行
2.写在 super.draw() 的上面
网友评论