Android开发艺术探索 第4章

view工作流程分为:measure、layout、draw

measure又分为View和viewGroup

其中VewGroup又可以分为DecorView(顶级View)和普通的ViewGroup

measure的决定因素:
MeasureSpec,测量说明书,32位的数值,前两位指定SpecMode(测量模式),后30位指定SpecSize(测量大小)

测量模式有三种:
unspecified(自测量模式)、exactly(精确指定模式)、at_most(最大模式)

measure的影响因素:
LayoutParams(布局参数,间接影响因素)通过影响MeasureSpec的数值从而间接影响到measure的数值

LayoutParams影响MeasureSpec的属性三种模式:LayoutParams.MACH_PARENT(匹配)、LayoutParams.WRAP_CONTENT、指定宽/高

MeasureSpec生成规则:

对于DecorView而言,自身的LayoutParams以及窗口的尺寸决定MeasureSpec

对于普通的ViewGrop以及View,父View的MeasureSpec和自身的LayoutParams决定其MeasureSpec:
  • LayoutParams指定宽/高时,父SpecMode对其不产生作用;此时其SpecMode为exactly,SpecSize为指定大小。
  • LayoutParams.mach_parent时,父SpecMode若是exactly,此时其SpecMode为exactly,SpecSize为父view剩下大小(减去其他子view占的);若父SpecMode为at_most,此时其ModeSpec为at_most,SpecSize为父view剩余大小。
  • LayoutParams.wrap_content时,父SpecMode若是exactly,此时其SpecMode为at_most,SpecSize为父view剩下大小;父SpecMode若是at_most,此时其SpecMode为at_most,SpecSize为父view剩下大小。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值