专栏首页李蔚蓬的专栏自定义控件基础 之 3.4 ViewGroup的测量 & 3.5 ViewGroup的绘制

自定义控件基础 之 3.4 ViewGroup的测量 & 3.5 ViewGroup的绘制

ViewGroup的测量

之前分析中说了,ViewGroup会去管理其子View,其中一个管理项目就是负责子View的显示大小。当ViewGroup的大小为wrap_content时,ViewGroup就需要对子View进行遍历,以便获得所有子View的大小,从而来决定自己的大小。而在其他模式下则会通过具体的指定值来设置自身的大小。   ViewGroup在测量时通过遍历所有子View,从而调用子View的Measure方法来获得每一个子View的测量结果,前面所说的对View的测量,就是在这里进行的。   当子View测量完毕后,就需要将子View放到合适的位置,这个过程就是View的Layout过程,同样是使用遍历来调用子View的Layout方法,并制定其具体显示的位置,从而来决定其布局位置。   在自定义ViewGroup时,通常会去重写onLayout()方法来控制其子View显示位置的逻辑。同样,如果需要支持wrap_content属性,那么它还需要重写onMeasure()方法,这点与View是相同的。

ViewGroup的绘制

ViewGroup通常情况下不需要绘制,因为它本身就没有需要绘制的东西,如果不是指定了ViewGroup的背景颜色,那么ViewGroup的onDraw()方法都不会被调用。但是,ViewGroup会调用dispatchDraw()方法来绘制其子View,其过程同样是通过遍历所有子View,并调用子View的绘制方法来完成绘制工作。


内容参考自Blankj

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android开发艺术笔记 | View的事件分发机制原理详析与源码分析(ing)

    (2)【处理事件,独一无二】 正常情况下,一个事件序列只能被一个View拦截且消耗!!! 这一条的原因可以参考(3), 因为一旦一个元素...

    凌川江雪
  • Android开发艺术笔记 | View的事件体系

    关于如何得到View的这四个参数, 在View的源码中它们对应于mLeft、mRight、mTop和mBottom这四个成员变量,获取方式:

    凌川江雪
  • 3.1 Android控件架构

    通常情况下,在Activity中使用setContentView()方法来设置一个布局,在调用该方法后,布局内容才真正显示出来。下面来看一下Android界面的...

    凌川江雪
  • 一文读懂Android View事件分发机制

    Android View 虽然不是四大组件,但其并不比四大组件的地位低。而View的核心知识点事件分发机制则是不少刚入门同学的拦路虎。ScrollView嵌套R...

    陈宇明
  • Android高频面试专题 - 提升篇(二)View绘制流程

    在提升篇(一)中提过,当建立好了decorView与ViewRoot的关联后,ViewRoot类的requestLayout()方法会被调用,以完成应用程序用户...

    Android扫地僧
  • Android之自定义View的死亡三部曲之Layout

    大家好!本次我们将继续学习Android之自定义View的死亡三部曲中的第二部:排兵布阵

    陈宇明
  • Android 面试官:简述一下 View 的绘制流程,这个都答不出来就别想拿Offer了

    作为一名Android开发者肯定明白View的地位,说它占据半壁江山也不为过,作为基石之一,搞明白它的加载流程是每个开发者都应该去做的,目前网络上很多关于Vie...

    Android技术干货分享
  • 笔记11 - Android touch事件分发时机

    ViewGroup是一组View的组合,在其内部会包含多个子View,当用户点击屏幕的时候,点击的位置可能在ViewGroup上,也可能在其内部View控件上。

    码农帮派
  • View 的绘制过程

    分别对应了:onMeasure() onLayout() onDraw 当然这个过程中也会调用许多其他的方法,都是作为辅助,大的流程就这三步。其中这三步内部的执...

    开发者
  • Butter Knife用法总结

    coderZhen

扫码关注云+社区

领取腾讯云代金券