面试一问:关于 View测量、布局及绘制原理

本文详细解析了Android中View的绘制流程,包括 Measure、Layout和Draw三个阶段。Measure阶段负责确定View的大小,Layout阶段确定View在窗口中的位置,Draw阶段执行实际的绘制操作。在自定义View时,需要关注onMeasure、onLayout和onDraw等关键方法的实现。此外,文章还探讨了MeasureSpec的模式和尺寸设定,以及如何根据父容器和自身布局参数确定View的大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

2020年2月22.距离新年已经过去了大半个月了,依旧的出不了门,依旧的躲在家里一日三餐,依旧的在家办公,也不知道下周会不会复工,再次汇总手中各种保存整理的笔记

相关内容后续GitHub更新,想冲击金三银四的小伙伴可以找找看看,欢迎star
顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找
https://github.com/xiangjiana/Android-MS
更多完整项目下载。未完待续。源码。图文知识后续上传github。
可以点击关于我自行查看

一、View绘制的流程框架


View的绘制是从上往下一层层迭代下来的。DecorView–>ViewGroup(— >ViewGroup)–>View ,按照这个流程从上往下,依次measure(测量),layout(布 局),draw(绘制)

二、Measure流程

顾名思义,就是测量每个控件的大小。

调用measure()方法,进行一些逻辑处理,然后调用onMeasure()方法,在其中调用 setMeasuredDimension()设定View的宽高信息,完成View的测量操作。

  public final void measure(int widthMeasureSpec, int heightMeasur eSpec) { 
  }

measure()方法中,传入了两个参数 widthMeasureSpec, heightMeasureSpec 表示 View的宽高的一些信息。

  protected void onMeasure(int widthMeasureSpec, int heightMeasure Spec) { 
     setMeasuredDimension(getDefaultSize(getSuggestedMinimumW idth(), widthMeasureSpec), 
        getDefaultSize(getSuggestedMinimumHeight(), heig htMeasureSpec)); 
   }

由上述流程来看Measure流程很简单,关键点是在于widthMeasureSpec, heightMeasu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值