View的绘制流程

View 测量过程&MeasureSpec

ViewRootImpl的layout方法实际调用了performTraversals(),其中调用measureHierarchy(),其中调用getRootMeasureSpec()获取宽高。之后调用performMeasure()。其中调用View.measure()。其中调用View.onMeasure(),可以复写该方法,并调用setMeasureDimension()测量位置。

View layout过程

ViewGroup:调用onLayout(),调用layoutChildren().最后调用子View的layout().

View:在layout(l,t,r,b),调setFrame(l,t,r,b)。

View draw过程

ViewGroup:调用dispatchDraw(Canvas),调用drawChild(),调用子View的draw()。

View:在draw()方法中,绘制自己的内容onDraw(Canvas),绘制子View的内容dispatchDraw(Canvas)。

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

推荐阅读更多精彩内容

  • View的绘制和事件处理是两个重要的主题,上一篇《图解 Android事件分发机制》已经把事件的分发机制讲得比较详...
    Kelin阅读 120,883评论 100 845
  • View的加载流程view布局一直贯穿于整个android应用中,不管是activity还是fragment都给我...
    ZEKI安卓学弟阅读 2,299评论 0 0
  • 引 这段时间学习了下View的绘制流程,本着好记性不如烂笔头的原则,尝试将这些内容记录下来,用于巩固和总结。这次学...
    叮咚象JC阅读 4,251评论 0 4
  • 博文出处:View的工作原理,欢迎大家关注我的博客,谢谢! 注:本文分析的源码基于 Android API 25 ...
    俞其荣阅读 4,026评论 0 5
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 13,585评论 0 11