Android开发 MeasureSpec介绍

AI:Coze、Dify、n8n:三款低代码工具如何选? Coze、Dify、n8n:三款低代码工具如何选? 阅读详情

搬家后的博客链接: IT客栈 www.itkezhan.org


在自定义View和ViewGroup的时候,我们经常会遇到int型的MeasureSpec来表示一个组件的大小,这个变量里面不仅有组件的尺寸大小,还有大小的模式。


这个大小的模式,有点难以理解。在系统中组件的大小模式有三种:


1.精确模式

在这种模式下,尺寸的值是多少,那么这个组件的长或宽就是多少。


2.最大模式

这个也就是父组件,能够给出的最大的空间,当前组件的长或宽最大只能为这么大,当然也可以比这个小。


3.未指定模式

这个就是说,当前组件,可以随便用空间,不受限制。


可能有很多人想不通,一个int型整数怎么可以表示两个东西(大小模式和大小的值),一个int类型我们知道有32位。而模式有三种,要表示三种状态,至少得2位二进制位。于是系统采用了最高的2位表示模式。如图:


最高两位是00的时候表示"未指定模式"。即MeasureSpec.UNSPECIFIED

最高两位是01的时候表示"'精确模式"。即MeasureSpec.EXACTLY

最高两位是11的时候表示"最大模式"。即MeasureSpec.AT_MOST



很多人一遇到位操作头就大了,为了操作简便,于是系统给我提供了一个MeasureSpec工具类。

这个工具类有四个方法和三个常量(上面所示)供我们使用:



//这个是由我们给出的尺寸大小和模式生成一个包含这两个信息的int变量,这里这个模式这个参数,传三个常量中的一个。

public static int makeMeasureSpec(int size, int mode)



//这个是得到这个变量中表示的模式信息,将得到的值与三个常量进行比较。

public static int getMode(int measureSpec)



//这个是得到这个变量中表示的尺寸大小的值。

public static int getSize(int measureSpec)



//把这个变量里面的模式和大小组成字符串返回来,方便打日志

 public static String toString(int measureSpec)

点云语义分割:RandLANet模型推理C++部署(2) 一、数据读取及预处理 二、模型推理 三、结果保存 阅读详情

相关推荐

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8026

自定义View的绘制原理图解

Measure过程决定了View的宽高,Measure完成以后,可以通过getMeasuredWidth和getMeasuredHeight方法来获取到View测量后的宽高,在几乎所有的情况下它都等于View的最终宽高,这仅仅是在代码规范的前提之下。 由上述流程来看Measure流程很简单,关键点是在于widthMeasureSpec, heightMeasureSpec这两个参数信息怎么获得?

Checkiming的博客 1127

Windows Server双机热备实战:用IIS+ARR+NLB搭建高可用Web服务(附避坑指南)

本文详细介绍了在Windows Server环境下,利用IIS、ARR(Application Request Routing)和NLB(Network Load Balancing)构建高可用Web服务的实战方案。通过双机热备架构,实现从网络层到应用层的全面冗余与智能流量分发,并提供了关键的配置步骤、常见避坑指南及性能调优建议,确保企业级Web服务的连续性与可靠性。

weixin_29210759的博客 383

安卓高级开发之自定义View(一)

1.什么是自定义View 安卓中自定义View就是根据需求自己设计一个组件,这就包括继承View或View的派生类,然后去重写内部方法。 通常来说自定义View分为三种: 继承View,自定义组件; 继承View的派生类,即系统提供的组件; 组合型控件,自定义组件中包含了其他组件。 2.在自定义View的步骤 1.测量 onMeasure(),即确定控件的长和宽; 2.布局 onLayout(),即确定控件的摆放位置; 3.绘画onDraw(),即确定控件的样式。 在自定义ViewGrou

ITJingYing2050的博客 564

共享单车数据分析与需求预测项目

除了自行车共享系统的有趣的实际应用之外,这些系统生成的数据特征使它们成为研究的有吸引力的对象。由于这些系统在交通、环境和健康问题中的重要作用,它们引起了极大的关注。Huber 回归器:一个对异常值具有鲁棒性的模型,CV 得分为 0.4660,表明它对此数据集可能不那么有效。代码中的内容cv_score就像您正在使用的机器学习模型的成绩单。它告诉您模型的表现如何。减少异常值的影响:它还可以减少异常值的影响,因为对数转换显着缩小了数据的范围。因此,cv_score平均分数表明您的模型的预测效果如何。

极光喵的博客 2947

[Linux项目实践] LCD Panel的硬件分析及调试

LCD硬件分析 项目使用3.5” TFT-LCD并且支持触摸控制。LCD的硬件可从几个方面学习:1)查看LCD的硬件连线。2)查看数据手册了解寄存器的控制。3)查看LCD DATASHEET了解硬件操作 1)LCD硬件连线 在图中有33个引脚,22根数据引脚和9根控制引脚。 LCD的工作原理:像素点是从左至右,从上至下逐个显示,LCD控制寄存器会从从内存中的framebuffer通

Terry_Yuan的技术专栏 3023

Android-MeasureSpec那些事

原文:http://tryenough.com/android-MeasureSpec Android系统控件无法满足我们的需求,因此有必要自定义View。具体方法参见官方开发文档:developer.android.com/guide/topic… MeasureSpec的简介 MesureSpec可以理解为测量View大小的依据。它由一个32位的int值组成,前两位表示测量模式,后30位表示大...

weixin_33694172的博客 474

R语言做一个 GM (1,1)灰色预测模型

累加生成是GM(1,1)模型的另一个重要步骤,它通过构造累加生成序列,把非线性非平稳时间序列转化为线性平稳时间序列。GM(1,1)是一种基于灰色系统理论的预测模型,通常用于中小样本的非线性、非平稳时间序列数据分析。灰色预测模型的核心是灰度处理,将原始时间序列转化为灰色时间序列。这里使用R语言中的diff函数对时间序列进行一次差分,然后对结果取累加和得到灰度序列。以上是GM(1,1)灰色预测模型在R语言中的实现步骤。需要注意的是,GM(1,1)模型适用于中小样本的时间序列预测,对于长期预测效果可能较差。

Mrrunsen的博客 3841

Android进阶---自定义View:MeasureSpec的真正意义与View大小控制

接收到父控件传递的MeasureSpec后,View应该如何用来处理自己的尺寸呢?onMeasure是View测量尺寸最合理的时机,如果View不是ViewGroup相对就比较简单,只需要参照MeasureSpec,并跟自身需求来设定尺寸即可,默认onMeasure的就是完全按照父控件传递MeasureSpec设定自己的尺寸的。

2401_83704192的博客 1733

模型预测控制(MPC)解析(三):多输入多输出系统

本文为阅读笔记,仅供学习交流使用!!! 在之前的文章中,为了简单起见,以单输入单输出系统为例介绍了MPC控制的实现方法。因为使用的是状态空间方程作为系统模型,这种方法可以轻松的扩展到多输入多输出系统中。 ...

行者无疆的博客 1万+

YOLOv11改进 - 卷积Conv | RFAConv:感受野注意力卷积动态调整感受野,提升小目标检出精度

本文介绍了感受野注意力卷积(RFAConv)及其在 YOLOv11 中的结合。空间注意力虽广泛应用但有局限,RFAConv 是将空间注意力与卷积操作融合的新型注意力机制,通过强化感受野空间特征关注、解决卷积核参数共享挑战、增强大尺寸卷积核处理能力等策略优化卷积核功能。它有基于 Group Conv 和 Unfold 两种实现方式,实验表明前者性能更好。我们将 RFAConv 集成进 YOLOv11,在数据集实验证明了方法优越性 。

魔改工程师的博客 1220

Android measure方法详解

相关文章 Android measure方法详解 Android 自定义布局 1. MeasureSpec类 MeasureSpec用来计算子视图的大小,有三种类型,UNSPECIFIED、EXACTLY和AT_MOST。 UNSPECIFIED表示未定义,即父控件未做限制,可以为任何值,一般设置为0。 EXACTLY表示实际值,即父容器已经指定了具体的值。 AT_MOST表示父容器提供了最大值...

假装你是大灰狼的专栏 6099

DeepLabv3+改进专栏

🔥【DeepLabv3+改进专栏!探索语义分割新高度】🌟 你是否在为图像分割的精度与效率发愁?📢 本专栏重磅推出:✅ 独家改进策略:融合注意力机制、轻量化设计与多尺度优化✅ 即插即用模块:ASPP+升级、解码器。

AIcurator的博客 2575

文本编辑工具_Mac文本编辑工具CotEditor,免费,非常好用

一个开源免费、为mac打造的文本编辑工具,支持多种编码格式。轻巧、支持语法高亮,分割编辑器,查找替换,可编写脚本,多语言友好等强大功能邀你体验!以下是使用者评论:「因为是一个日本的开发者写的,有几乎完美的竖排版功能,还有自定义字体!非常不错,适合用来中文写作。」「第一感觉还不错,才用了几分钟。如果有自动插入日期时间的功能更好。后续有想法会补充,请加油!」「刚刚使用了几分钟,真的很好用,还...

weixin_39886619的博客 1171

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

全国计算机一级WORD第三套,全国计算机等级考试一级WPSOffice练习题及答案第三套.pdf...

全国计算机等级考试一级 WPS Office 练习题及答案第三套1、下面( B) 视图最适合移动、复制幻灯片。A ) 普通B) 幻灯片浏览C )备注页D) 大纲2、如果希望将幻灯片由横排变为竖排,需要更换( A ) 。A ) 版式B) 设计模版C )背景D) 幻灯片切换3、动作按钮可以链接...

weixin_42524401的博客 527

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

计算机一级wpsoffice知识,全国计算机一级WPSOffice考试试题

计算机技术与通信技术的结合,使计算机网络得到发展。信息服务业的兴起使社会信息资源得到更广泛的利用。下面是小编整理的关于全国计算机一级WPSOffice考试试题,希望大家认真阅读!选择题1、下面(B)视图最适合移动、复制幻灯片。A)普通B)幻灯片浏览C)备注页D)大纲2、如果希望将幻灯片由横排变为竖排,需要更换(A)。A)版式B)设计模版C)背景D)幻灯片切换3、动作按钮可以链接到【D】。A)其它幻...

weixin_32569511的博客 2567

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Qt】(篇一)《概述:背景介绍、搭建开发环境、Qt Creator、Qt Hello World程序、项目文件解析、编程注意事项》---详解

Qt Creator 是⼀个轻量级的跨平台集成开发环境(IDE)专为使⽤ Qt 框架进⾏应⽤程序开发⽽设计。它是⼀个功能强⼤、易于使⽤、快速且⾼效的⼯具,被⼴泛⽤于编写各种类型的应⽤程序,如桌⾯应⽤程序、移动应⽤程序和嵌⼊式系统等。Qt Creator 提供了⼀个可视化的界⾯设计器和代码编辑器,可以帮助开发者更快捷地创建复杂的⽤⼾界⾯和处理各种事件。它还包含了调试⼯具、版本控制⼯具、⾃动完成和智能提⽰等功能,以及⽀持多语⾔和跨平台的开发环境。

2501_93351213的博客 686

MeasureSpec介绍及使用详解

一个MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求。一个MeasureSpec由大小和模式组成。它有三种模式:UNSPECIFIED(未指定),父元素部队自元素施加任何束缚,子元素可以得到任意想要的大小;EXACTLY(完全),父元素决定自元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;AT_MOST(至多),子元素至多...

xxdw1992的博客 2532

理解Android中的MeasureSpec

文章收藏的好句子:永远要相信美好的事情即将发生。ps:本文源码是基于 Android Api 31 来分析的目录1、MeasureSpec 1、1SpecMode 1、2MeasureSpec的 int 值和LayoutParams的对应关系1、MeasureSpec我们在 Android手机上看到的界面,其实就是 View,显示 View的...

qq_37837621的博客 1226

Android MeasureSpec解析

1. MeasureSpec组成 MeasureSpec是View的一个内部类,由一个32位的int值组成,前两位代表SpecMode测量模式,后30位代表SpecSize大小值。 其中测量模式共有三种: EXACTLY(确定):父控件为子View指定确切大小,对应match_parent、50dp等 AT_MOST(最多):你的大小不能大于父控件给你指定的size,但具体是多少,得看你自己的实现,对应wrap_content UNSPECIFIED(未指定):父控件不对你有任何限制,你想要多大给你多大

wqn的博客 1041

Android MeasureSpec详解

我们在自定义控件的时候经常要重写View的onMeasure方法,onMeasure方法有两个int类型的参数,这两个参数就是MeasureSpec,这两个参数可不是普通的int数值,里面包含了mode和size两个信息,一个int有32位二进制,用高2位表示mode,低30位表示size,这样在一个int里面包含两个数值信息的设计,是为了减少对象的创建和内存的分配onMeasure()方法用来测量空间的宽高,方法中的MeasureSpec参数由控件的父布局传入,是父View对子View的宽高的约束。

野猿新一 1300

Android 自定义控件基础:measure过程

measure过程要分为两种情况:如果是原始的View,需要通过measure 方法就完成其测量过程;如果是ViewGroup,除了完成自己的测量过程外,还会遍历去调用所有子元素的measure方法,各个子元素再递归去执行这个流程。 ViewRootImpl View 的整个绘制流程的启动入口可以从 ViewRootImpl 的 performTraversals 方法开始看。performTraversals 方法调用了performMeasure()方法。 // ViewRootImpl 的源码.

xufei5789651的博客 561

android学习——MeasureSpec介绍及使用

转载:http://www.cnblogs.com/nanxiaojue/p/3536381.html?utm_source=tuicool 一、MeasureSpc类说明  SDK的介绍:MeasureSpc类封装了父View传递给子View的布局(layout)要求。每个MeasureSpc实例代表宽度或者高度 它有三种模式: ①、UNSPECIFIED(未指定)

junshengluo 895

Android MeasureSpec测量规格

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

xiangxiongfly 697

Android进阶——Android视图工作机制之measure、layout、draw

前言 自定义View一直是初学者们最头疼的事情,因为他们并没有了解到真正的实现原理就开始试着做自定义View,碰到很多看不懂的代码只能选择回避,做多了会觉得很没自信。其实只要了解了View的工作机制后,会发现是挺简单的,自定义View就是借助View的工作机制开始将View绘制出来的 Android视图工作机制简介 Android视图工作机制按顺序分为以下三步: measure:确定

点击置顶文章查看博客目录(全站式导航) 9674

Android自定义View:MeasureSpec的真正意义与View大小控制

这里重点讲一下ViewGroup,为了获得合理的宽高尺寸,ViewGroup在计算自己尺寸的时候,必须预先知道所有子View的尺寸,举个例子,用一个常用的流式布局FlowLayout来讲解一下如何合理的设定自己的尺寸。EXACTLY(完全),父控件为子View指定确切大小,希望子View完全按照自己给定尺寸来处理,跟上面的场景1跟2比较相似,这时的MeasureSpec一般是父控件根据自身的MeasureSpec跟子View的布局参数来确定的。一般这种情况下size>0,有个确定值。

2301_80488270的博客 827
上一篇: 完美解决Android在listview添加checkbox实现单选多选操作问题
下一篇: android 垂直 SeekBar 源代码(VerticalSeekBar)
failure01
博客等级 码龄15年 18粉丝 31原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值