自定义view(二)

1.View 的绘制

通过继承View 并重写它的onDraw()来完成绘制。

onDraw()有一个参数,就是Canvas对象。使用这个Canvas就可以绘制图像了,Canvas canvas = new Canvas(bitmap);

创建一个Canvas 对象时,为什么要传进去一个bitmap 对象呢?

这是因为传进去的bitmap 与通过这个bitmap 创建的Canvas 画布是紧紧联系在一起的,这个过程我们称之为装载画布。

这个bitmap用来存储所有绘制在Canvas的像素信息。所以当你通过这种方式创建了Canvas 对象后,后面调用所有的Canvas.drawXXX 方法都发生在这个bitmap 上。

2.ViewGroup的测量

viewGroup会管理子view的大小。

当viewGroup的大小为warp_content时,viewGroup会遍历子view ,以便获取所有子view的大小,来决定自身的大小。-------->调用的是view的 measure的测量方法 【就是自定义view(一)提到的onMeasure】

如果是其他模式,则会通过指定值来设置自身的大小。

当子view的测量完毕以后,就需要将子view放到合适的位置,这个时候就是view的Layout的过程。ViewGroup在执行Layout的过程时,也会遍历view的Layout方法,并指定其具体显示位置。

3.viewGroup绘制

viewGroup通常不需要绘制,因为他本身就没有需要绘制的东西。如果不是指定viewGroup的背景颜色,连onDraw()方法都不会调。

但是ViewGroup会使用dispatchDraw()来绘制其子view,也是遍历子view,并调用子view的绘制方法。

自定义view(二)

上一篇:struts2学习笔记(4)——数据类型转换


下一篇:Android Audio控制和MediaButton远程控制(音视频控制配合)