View的绘制流程入门.对郭霖大大文章知识小补充

这篇博客详细解释了Android中View的大小决定、测量与显示的关系。作者指出,View的大小由setMeasuredDimension()方法决定,但受到父View和XML属性的影响。测量大小并不等同于显示大小,显示大小由onLayout()确定。即使测量大小与显示大小相同,View的内容能否完全显示取决于onDraw()。内容型视图的大小由内容决定,图形型视图的大小可能受父视图布局影响。最终显示的内容是所有层可视范围的交集。
摘要由CSDN通过智能技术生成

看郭霖大大的博客看晕了,经过多番找资料硬啃,终于把这一块给啃熟了.下面根据自己的理解对郭大的博客做一个简单解释吧.不知道会不会有和我一样笨的小白,如果有的话就来一起交流吧.
主要明确几个问题:

一个View的大小到底是在哪?由谁决定的?

郭霖大大的文章写了一大串,很多流程,.但是大家看到最后的话还是应该可以知道,一个View的大小是由它自己的setMeasuredDimension(width, height)方法决定的.
但是有好多东西会提供建议权,比如父View会给当前View一个建议,View自己的XML属性里也会建议.但是这些都是次要的.因为别人的建议你可以不听嘛.
也就是说,爸爸和儿子的xml文件商量了之后对儿子说:儿子啊,我和你的xml叔叔商量之后,有这么大个地方(size),你呢按照这样规格(mode)来计算你自己的大小会比较好.然后呢把mode和size传给你.但是呢,你比较听话,你就听了他们的话.你一个不高兴,你可以直接设置setMeasuredDimension(width, height).这一切的最终决定权都在View自身.

view测量出来的大小就一定等于它显示出来的大小吗?

当然不是!
本小白刚开始看郭大的文章就是在这里被绕进去了.关于View的显示大小,实际上可以这么理解.系统用一张白纸把View盖住,但是白纸上有个矩形的洞,矩形的洞里露出来的大小,就是你实际显示的大小.那么一个View到底在显示区域里能显示多大的内容,也可以理解为白纸上的洞View的哪里是在哪里指定的呢?
这就是第三个流程onLayout()中决定的了.
也就是说,onMeasure()根本没有去测量View在屏幕上的大小,而是在测量View本身的大小.但是为了尊重onMeasure()方法的结果,一般会让View的显示大小等于View的测量大小.
那么View在计算大小的时候,应该怎么知道自己的可视范围的大小呢.郭大的文章那么大的篇幅不都是在分析嘛?

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值