如下为View的requestLayout:

经历了两步:

  • 增加自身标记mPrivateFlags为PFLAG_FORCE_LAYOUT
  • 调用父视图的requestLayout()方法。ViewGroup没有覆写requestLayout(),所以仍旧如此执行。

上溯遍历的最终结果是:

  • 和启动requestLayout的View有父关系或者间接父关系的视图的mPrivateFlags都被打上了PFLAG_FORCE_LAYOUT。
  • ViewRoot的requestLayout被调用。

ViewRoot的requestLayout干了什么?

在doTraversal中会调用到我们熟悉的performTraversals函数。

measure

layout

draw

measure layout 都是一路开绿灯,但是draw可没有.
也就是说draw并不受requestLayout的影响。主要看自身有没有重绘的需求。

【Android View绘制体系】requestLayout相关推荐

  1. 【Android View绘制体系】invalidate

    invalidate内部思想 invalidate的调用流图 View.invalidateInternal 打上DIRTY标记 为后面Draw做准备 mPrivateFlags |= PFLAG_D ...

  2. View 绘制体系知识梳理(7) getMeasuredWidth 和 getWidth 的区别

    前言 前几天被问到了getMeasuredWidth和getWidth之间的区别,因此回来看了一下源码,又顺便复习了一遍measure/layout/draw的过程,有兴趣的同学可以看前面的几篇文章 ...

  3. View绘制体系(三)——AttributeSet与TypedArray详解

    View绘制体系(三)--AttributeSet与TypedArray详解 前言 上篇博客中讲了LayoutInflater.inflate机制,其中提到了AttributeSet和XmlPullP ...

  4. 【Android View绘制之旅】Draw过程

    出效果:绘制 经过前面的准备工作 :[Android View绘制之旅]Measure过程,[Android View绘制之旅]Layout过程 我们的视图具备了宽高数据,位置数据,现在到了激动人心的 ...

  5. 【Android View绘制之旅】Layout过程

    1.为什么要进行Layout? 在[Android View绘制之旅]View之测量Measure过程后,View我们得到View的宽高,但光只有宽高值是不足以反映视图的,更需要知道View所在的位置 ...

  6. 【Android View绘制之旅】主脉络

    没搞清楚View绘制原理会怎么样? 只会玩玩初级的组件 看不懂哪些绚丽效果组件实现的原理,即使你有源码 PM会对你很失望,因为有点高级特性你就跪了 当然好的工作机会是没有你的份的 View绘制之旅该怎 ...

  7. android 绘图流程,Android View绘制流程

    前言 不知道大家有没有想过一个问题,当启动一个Activity的时候,相应的XML布局文件中的View是如何显示到屏幕上的?有些同学会说是通过onMeasure().onLayout().onDraw ...

  8. Android View 绘制流程

    前面讲到 Android View 加载流程,使用 LayoutInflater 将 xml 文件转变成 View ,但是还需要将 View 绘制出来,才能被用户看到,这一过程为绘制流程.由于 And ...

  9. 熬夜肝了万字Android View 知识体系

    工作原理 Android 中通过 Window 作为屏幕的抽象,而 Window 的具体实现类是 PhoneWindow .通过 WindowManager 和 WindowManagerServic ...

最新文章

  1. .net生成图片验证码
  2. Jackcard相似度和余弦相似度(向量空间模型)的java实现
  3. 数据中台实战入门篇:数据中台对内、对外合作机制
  4. 养成一个SQL好习惯带来一笔大财富
  5. linux驱动静态分配内存,Linux驱动设计——内存与IO访问
  6. 新疆师范大学计算机科学学院,新疆师范大学王炜教授亲临计科学院讲学——记计算机科学学院研究生院...
  7. VSCode配置JAVA开发环境,java初级面试笔试题
  8. Gerrit代码Review入门实战 1
  9. tar 整个linux系统,linux下tar解压
  10. c#初学者记录(1)
  11. EasyUI管理后台模板(附源码)
  12. WPF 自定义 写实风 雷达图控件
  13. 幸运抽奖系统带后台源码
  14. 微信小程序中服务器主动向小程序多个客户端发送通知消息(模板消息)的解决方法
  15. 论坛源码推荐(12月24日):OS X原生开源游戏模拟器OpenEmu iOS 7条形码扫描器
  16. 结构化、半结构化和非结构化数据
  17. Windows 时间同步出错
  18. 2017年全国大学生电子设计竞赛 参赛回忆
  19. Word不计算封面、目录页数将正文页码修改为第几页共几页的格式
  20. University Code

热门文章

  1. win10装linux分区格式化硬盘,windows10 下硬盘安装centos7.0 – MBR硬盘分区格式
  2. MySQL原生密码认证
  3. cogs 服务点设置
  4. 点击按钮显示谷歌地图
  5. Nachos3.4系列-1 安装与环境配置 【转】
  6. Windows 2008 R2 SP1部署Lync2010标准版(1)
  7. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
  8. javaweb项目中发布webservices服务
  9. 完成端口模式下的高性能网络服务器【转】
  10. Novodex2.6.2 布料系统