Android View绘制流程

从根布局的performTraversals()方法开始,Traversal的意思就是遍历,也就是会从上到下遍历整个view树,每个view都有绘制方法绘制自己,viewgroup绘制自己的同时还要负责通知自己子view的绘制

绘制方法:measure--->layou----->draw

measure:

    在ViewGroup中的measureChildren()方法中会遍历测量ViewGroup中所有的View,当View的可见性处于GONE状态时,不对其进行测量

    自定义View时手动处理wrap_content时的情形

    直接继承View的控件需要重写onMeasure方法并设置wrap_content时的自身大小,否则在布局中使        用    wrap_content就相当于使用match_parent。此时,可以在wrap_content的情况下(对应MeasureSpec.AT_MOST)指定内部宽/高(mWidth和mHeight)。

    在activity中获取view高度

    view.post()

layout:

    会通过setFrame方法来设定View的四个顶点的位置,即View在父容器中的位置。然后,会执行到onLayout空方法,子类如果是ViewGroup类型,则重写这个方法,实现ViewGroup中所有View控件布局流程。

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

推荐阅读更多精彩内容

  • 1 概述 对上图做出简单解释:DecorView是一个应用窗口的根容器,它本质上是一个FrameLayout。De...
    秀叶寒冬阅读 1,208评论 0 3
  • 标签: Android 源码解析 View 关于View的绘制流程,或者说 View 的工作流程(说绘制流程容易让...
    koguma阅读 2,010评论 1 18
  • 相信很多Android开发的同学都知道View绘制流程大致是先measure、layout、draw。但是你们知道...
    jxiang112阅读 1,188评论 1 1
  • View 绘制机制 一、 View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请...
    Android姿态阅读 5,644评论 0 8
  • 每个人都有梦想,“它”是我们内心深处所向往的,现在的我们正处于花季时期,一天天的生活如流水般消逝在我们脑海中,回忆...
    无名的小姐阅读 225评论 0 0