Hencoder学习笔记1-5

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() 的上面

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容