View工作原理

本文深入探讨了Android中视图的绘制流程,从ActivityThread中Activity创建完毕后的DecorView添加到Window开始,详细讲解了ViewRootImpl的创建及其与DecorView的关联。通过解析performTravelsals方法,阐述了measure、layout和draw三个关键阶段,以及DecorView作为顶级View的角色和SpecMode的三种模式。
  1. 在ActivityThread 中Activity创建完毕后,会将DecorView添加到Window中,同时创建ViewRootImpl
    对象,并将ViewRootImpl和DecorView对象建立关联;因此View的绘制也是从ViewRoot的performTravelsals方法开始

PerfromTrasal方法依次调用如下方法

  1. performMeasure measure onMeasure 如果有子类继续调用子类measure onMeasure

  2. performLayout layout onLayout …

  3. performDraw draw onDraw …

DecorView作为顶级View其实是一个FrameLayout 它内部包含了一个LInearLayout,这个LinearLayout里面有两个部分,具体还看主题和Android版本

总之一定会有一个content区域,我们设置的setContentView就是设置到这个区域内

SpecMode有三种

  1. Unspecified 不做限制要多大给多大,这种情况用于系统内部

  2. Excalty 精确的 match_parent 或者具体数值

  3. AT_MOST :不超过父容器传来的限制最大值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值