(五)View的测量 MeasureSpec类

ANDROID自定义视图——onMeasure,MeasureSpec源码 流程 思路详解 自定义视图详解。MeasureSpec,onMeasure,measureChildren等方法源码分析。 阅读详情
MeasureSpec类
      MeasureSpec是一个32位的int值,高两位为SpecMode(测量模式),低30位为SpecSize(测量大小)。
      SpecMode(测量模式)分类:
      EXACTLY模式:父容器已经测出了View所需要的精确大小,此时View的最终大小就是SpecSize所指定的值。对应math_parent和具体数值两种模式。
     AT_MOST模式: 父容器指定一个可用大小即SpecSize,View的大小不能超出此值,具体根据不同View的具体实现不同。一般对应wrap_content.
     UNSPECTFIED模式:父容器不对View进行限制,一般用于系统内部。

     系统内部通过MeasureSpec来进行View测量的,正常情况下使用View指定MeasureSpec,尽管如此,我们可以给View设置LayoutParams。在测量时,系统将LayoutParams在父容器的约束下转化成对应MeasureSpec,然后根据MeasureSpec确定高和宽。注:LayoutParams和父容器一起才能决定View的MeasureSpec。
     顶级View(DecorView)的MeasureSpec由窗口尺寸和其自身的LayoutParams来共同决定。它的创建过程在源码中表现为:在ViewRootImpl的measureHierarchy方法中调用了getRootMeasureSpec(int 屏幕尺寸,int LayoutParams),该方法返回具体的measurespec,传入math_parent和具体数值,返回EXACTLY,传入wrap_content返回AT_MOST。之后将返回的值传入performMeasure(int,int)方法。
     对于普通View来说,其MeasureSpec由父容器的MeasureSpec和自身的LayoutParams共同决定,View的measure的过程由ViewGroup传递过来,在ViewGroup的measureChildWithMargins方法中调用getChildMeasureSpec方法返回Child高和宽的MeasureSpec,之后调用child.measure方法。getChildMeasureSpec方法的具体实现逻辑如

下图:



Android View 的测量 在绘制View之前,我们还需要考虑一下,系统是如何绘制这些View的。相信大家都曾经玩过这样一个游戏:一个人蒙着眼睛,那笔去画板上画出一个指定的图案,另一个人则通过说话来指导他如何去画。比如你会指导他,在距画板边缘一掌宽的地方画一个边长大概10厘米的正方形,而如果你只告诉他,画一个矩形,那么你的同伴就无法准确的画出这个图形了。其实,Android就好像那么蒙着眼睛画画的人,你必须精确的告诉他该如何... 阅读详情

相关推荐

FANUC机器人电弧跟踪功能深度解析:从电流采样原理到ROBOGUIDE仿真避坑指南

本文深度解析FANUC机器人电弧跟踪技术,从电流采样原理到ROBOGUIDE仿真避坑指南,详细介绍了电流波形分析、实时补偿机制及现场调试技巧。针对工业焊接中的常见问题,提供从底层原理到高阶应用的解决方案,帮助工程师优化自动化焊接质量。

weixin_31785177的博客 551

View的Measure过程

在谈View的Measure过程之前,我们先谈谈MeasureSpec类。我们直接说结论:1.一个View的widthMesureSpec和heightMeasureSpec决定了这个View的宽和高。2.子View的width/heightMeasureSpec值是由父View的width/heightMeasureSpec值和子View的宽/高LayoutParams计算得到,而子View的w...

WillLiaowh的博客 425

水环境综合管控平台完整方案

水环境综合管控平台项目(2026-2027)摘要 项目概况: 总投资5亿元的水环境综合管控平台项目,是国家数字政府与生态文明建设战略的重要实践。项目严格遵循2026年最新政策标准,整合物联网、大数据和AI技术,构建覆盖水质监测、污染溯源、生态保护等全流程的智能管控体系。 核心内容: 系统架构:采用五层设计(基础设施层至展示层),集成10大核心功能模块,包括水质动态监测、污染智能溯源和生态评估预警系统; 技术创新:运用2026年最新边缘计算和数字孪生技术,实现毫秒级水质异常响应和三维流域仿真; 实施规划:分7

随读手记 403

Android-高级-UI-进阶之路-(三)-理解-View-工作原理并带你入自定义-View-门

final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams(); //得到子元素的 MeasureSpec final int childWidthMeasureSpec = getChildMeasureSpec(parentWidthMeasureSpec, mPaddingLeft + mPaddingRight + lp.leftMargin + lp.rightMargin widthUsed, lp.widt

m0_64319166的博客 293

【UE5】多用户协同编辑实战:从配置到实时协作

本文详细介绍了在虚幻引擎5中配置和使用多用户协同编辑功能的完整流程。从启用Multi-User Editing插件、配置UDP Messaging网络通信,到启动服务器、创建会话并实现实时协作,提供了从环境准备到实战协作的清晰指南。文章还分享了资产同步、场景分批、对象锁定等实用技巧,并强调了网络配置与版本一致性等关键避坑点,旨在帮助中小型团队提升关卡设计和原型开发的协作效率。

weixin_29001683的博客 267

基于ROS2的无人机野生动物巡查系统设计

自主巡检系统是嵌入式人工智能与机器人技术融合的关键应用方向,其核心在于多源感知融合、实时路径规划与端侧智能识别的协同实现。原理上依赖SLAM定位构建环境地图,结合栅格化建模与混合路径算法(如蚁群+BFS)达成全覆盖遍历;技术价值体现在资源受限平台下的确定性响应与时空对齐能力,支撑高鲁棒性野外作业。典型应用场景包括生态监测、禁飞区巡检及小尺度智能安防。本文围绕ROS2 Humble中间件架构、Livox激光雷达与MaixCAM视觉协同、YOLO11n INT8模型端侧部署等关键技术展开,突出嵌入式AI与实时控

weixin_30598047的博客 649

androidP: View的工作原理-理解MeasureSpec

参考链接 https://blog.csdn.net/carson_ho/article/details/94545178?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-7-94545178.pc_agg_new_rank&utm_term=android+measurespec.makemeasurespec&spm=1

zhuowalun8427的博客 253

超分辨率重建:ESPCN与SRGAN技术对比

超分辨率重建:ESPCN与SRGAN技术对比​ 人工智能,计算机视觉,大模型,AI,超分辨率重建是一种通过技术手段,将低分辨率图像转换为高分辨率图像的过程。它的目的是恢复低分辨率图像中丢失的细节信息,使图像具有更高的清晰度和视觉质量。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

使用View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED)在在onCreate中获得控件的大小问题

android 在onCreate中获得控件的大小 int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); edt_height.measure(w, h)...

qijingwang的博客 7125

【AFAC2026金融智能-赛题二】2亿像素的面条图,我切了1000刀拼回完美Markdown

摘要: AFAC2026金融智能创新大赛的「复杂金融文档还原挑战」任务是将高分辨率金融文档截图转换为结构化Markdown文本。面对2亿像素的“面条图”和严格的计算限制(禁用主流大模型,仅允许调用FinixDoc-VL API且模型需小于10M),作者提出四层流水线解决方案: 图像预处理:通过文本行投影检测在行间隙处智能切图,避免截断文字; API调度:5路并发轮询请求,结合内容哈希缓存与指数退避重试机制优化调用效率; 后处理:采用最长公共子串匹配去除文本重叠,并设计表格对齐算法修复跨块表格; 结果输出:按

169

自动化上位机开发C#100例:如何用面向对象的方式封装雷赛运动控制卡EtherCAT总线卡(C#代码)

自动化上位机开发C#100例:雷赛运动控制卡EtherCAT总线卡C#封装类。

十多年IT经验,专注机器视觉,智能制造半导体行业 5029

View的measure测量过程梳理

View 测试过程分析

liuqinhou的博客 648

从泛光成像到可寻址扫描:Flash激光雷达的车规级优势与技术演进

Flash激光雷达凭借固态架构优势成为自动驾驶感知技术的重要发展方向。该方案无机械部件,具备抗振动、长寿命等特点,同时CMOS工艺带来显著成本优势。但传统泛光式存在能量弥散问题,难以兼顾大视场和远距离探测。可寻址扫描技术通过分区点亮VCSEL阵列,有效提升局部能量密度,在保持固态可靠性的同时突破性能瓶颈。这种"电子扫描+分区点亮"的混合架构,使Flash激光雷达有望实现大视场、远距离、高可靠和低成本的多重突破,推动自动驾驶技术发展。

致力于lidar应用开发 233

Android自定义View:带你了解神秘的MeasureSpec类

前言 在了解自定义View三大流程的Measure过程前,我们需要了解一个重要基础:MeasureSpec 今天,我将全面解析 MeasureSpec类的相关知识,希望你们会喜欢 文章较长,建议收藏等充足时间再进行阅读 目录 1. 简介 2. 组成 测量规格(MeasureSpec) = 测量模式(mode) + 测量大小(size) 测量规格(MeasureSpec):32位...

Carson带你学Android 3354

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

View 的测量 MeasureSpec

View 的测量 MeasureSpec 我们平常自定义都是重写 view 的 onMeasure(int widthMeasureSpec, int heightMeasureSpec)方法,而这个方法传入的宽和高都是一个32位 int 值。下面我们揭开这层神秘的面纱。 MeasureSpec 解析 MeasureSpec 是位于 View 类中的一个静态类,也就 100 行左右。我们先来看其中...

xyTianZhao 308

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android源码阅读:View测量流程

View的测量过程是View绘制三大步骤(测量、布局、绘制)中的第一步。整个View树的测量涉及的流程很多,我们先看一些必要的前置知识:每一个View(除去根节点以外)都存在于某一个ViewGroup中,子View的尺寸受到父View的限制,这就涉及到父View对子View的尺寸要求;每一个ViewGroup又可能包含多个子View,所以ViewGroup不仅要考虑其父View对自己的尺寸要求,还要考虑到自己对多个子View的尺寸;

sytregn的博客 1236

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android MeasureSpec测量规格

Android MeasureSpec是View测量过程中的核心机制,它将测量模式和尺寸合并为一个int值,实现高效传递。MeasureSpec包含三种模式:UNSPECIFIED(无约束)、EXACTLY(精确尺寸)和AT_MOST(最大限制),分别对应父容器对子View的不同约束。核心API包括生成测量规格的makeMeasureSpec()、获取模式的getMode()和获取尺寸的getSize()。子View的MeasureSpec由父容器的MeasureSpec和子View的LayoutParam

xiangxiongfly 697

长谈:关于 View Measure 测量机制,让我一次把话说完

《倚天屠龙记中》有这么一处:张三丰示范自创的太极剑演示给张无忌看,然后问他记住招式没有。张无忌说记住了一半。张三丰又慢吞吞使了一遍,问他记住多少,张无忌说只记得几招了。张三丰最后又示范了一遍,张无忌想了想说,这次全忘光了。张三丰很满意,于是放心让张无忌与八臂神剑去比试。 首先声明,这一篇篇幅很长很长很长的文章。目的就是为了把 Android 中关于 View 测量的机制一次性说清楚。算是自己对自己较

frank 的专栏 2万+

Android 自定义View 测量控件宽高、自定义viewgroup测量

主要思路:对FlowLayout的所有子View逐个进行测量,获得measuredHeight和measuredWidth,在水平方向上根据这个尺寸依次对View进行放置,放不下则另起一行,每一行的高度取该行所有View的measuredHeight最大值。3.1、单个子View测量。

Dream It Possible 2232

深入理解Android中View绘制三大流程及MeasureSpec详解

View绘制的三大流程 提示: 文章目录View绘制的三大流程前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例)

yuanjl 3445

View系列 (二) — MeasureSpec 详解

MeasureSpec 详解一、概述二、MeasureSpec 的构成1. MeasureSpec 中的常量2. MeasureSpec 提供的方法三、MeasureSpec 的使用1. 根 View 大小的测量2. 非根 View 大小的测量 一、概述 在 View 的测绘 (measute()) 过程中,会用到 MeasureSpe (测量规格)。 MeasureSpec的作用 确切来说,M...

Elson的博客 832

浅析Android View的测量布局流程

从测量流程的分析中,总结出自定义View需要注意的事项:自定义View的从上面的源码分析中可以得知,onMeasure的默认实现是将等同于进行处理,因此自定义View时需要注意对这种情况的处理。解决办法是通过对onMeasure方法进行重写,实现对模式的特殊处理,即判断布局参数是否为,是的话则调用方法并传入具体数值。自定义View的padding参数通过上面源码的分析可以知道,容器类型的View比如都会通过ViewGroup的方法将自身的padding和子View的margin。

boker_han的博客 1355

Android的View体系(四):MeasureSpec类详细讲解

MeasureSpec代表一个32位int值,高2位代表SpecMode,低30位代表SpecSize。SpecMode是指测量模式,而SpecSize是指某种测量模式下的规格大小。 SpecMode有三类(UNSPECIFIED、EXACTLY 和AT_MOST),每一类都代表特殊的含义,如下所示: ...

微不足道的博客 1073

Android自定义View测量:UltimateAndroidReference中的MeasureSpec

在Android开发中,自定义View是实现独特UI效果的关键技术,而测量(Measure)作为View绘制流程的第一步,直接决定了View的尺寸和布局。本文将结合[UltimateAndroidReference](https://link.gitcode.com/i/1019840b292bd432650cfe4aeaf5eced)项目中的最佳实践,详细解析MeasureSpec(测量规格)的...

gitblog_00335的博客 485

Android 自定义View 测量控件大小onMeasure中MeasureSpec作用

在自定义view中onMeasure 里面利用MeasureSpec来完成控件的测量是必不可免的 MeasureSpec中方法很少,其中只有getSize,getMode,makeMeasureSpec三个放法提供给我们调用 getSize 需要传入一个int类型的值,而这个值就有讲究了,它里面包含了具体的size数值和mode类型,所以我们一般就通过getSize这个方法来获取这

liaoyi的博客 1334
上一篇: (四)View的控件架构
下一篇: (六)VIew的绘制过程-measure、layout、draw
kerrysimon
博客等级 码龄11年 3粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值