高级自定义viwe系列三;如何测量自身大小?

本文探讨了在Android开发中自定义View时如何测量自身大小,通过重写onMeasure方法来设定规则。文章指出,View在View树结构中的测量过程是从顶层递归到最底层,并详细阐述了不同情况下父ViewGroup与子View尺寸的关系,如固定宽高、wrap_content和match_parent。同时,提到了Measure过程可能在View生命周期中发生多次。
摘要由CSDN通过智能技术生成

作者:波澜步惊
链接:https://www.jianshu.com/p/10e60415ca7b

前言

学习源码,研究源码编程思想,是程序开发者进阶的必经之路。然而,进了源码世界,就像是进了迷失森林,没有地图,迟早要死在里面。有个地图会好很多。
此类文集,专门用图解编程的方式,来讲解一个知识点,从一个点切入,理解切入点之后,再进行知识发散。
路漫漫,进阶之路不好走。与众君共勉之。

高级自定义view系列文章,都为学员波澜步惊在学习高级进阶课程的过程中所吸收和思考的知识,尤其对于从事Android开发3-5年,处于瓶颈期需要寻找突破和进阶方向的小伙伴们一定有所启发和帮助的

高级自定义viwe系列思维脑图;

正文

我们自定义一个View,可能会重写onMeasure,onLayout,onDraw. OnMeasure的作用是"自定义定规则"来决定自身的大小. 那我们重写了onMeasure之后,到底发生了什么事?

先写一点基础知识作为铺垫

在Android中,一个View从来不是一个单独个体,它是View树结构的一部分。系统在生成View树的时候,会从顶端开始递归,一直到最深处的View。而测量Measure,也是从树根叶子节点的过程。有时候,子View和它的父ViewGroup的大小在一定条件下是可以相互影响的。
比如:
如果父ViewGroup是固定宽高,那么子View的可绘制区域,最大也就是父的边界了。
如果父ViewGroup是wrap_content,那么就会受到子测量结果的影响,这时候如若子view很大,那么父也会被撑大。
如果父ViewGroup是math_parent,那么父 已经是它自己可以达到的最大宽了,那么子最大也只能是父的最大宽高.*

并且,Measure在一个View的生命周期中,可能出现多次

具体规则可以具体去查其他网络资料,在这里不赘述了。

最后;一张图从过程看到结论!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值