首页 > 其他 > 详细

自定义view(二)

时间:2017-01-05 22:34:55      阅读:159      评论:0      收藏:0      [点我收藏+]

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(二)

原文:http://www.cnblogs.com/yiyexuechen/p/6254207.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!