首先 onMeasure方法是为了得到各个View大小的函数

fill_parent-->public static final int EXACTLY = 1 << MODE_SHIFT;

wrap_content-->public static final int AT_MOST = 2 << MODE_SHIFT;

public static int makeMeasureSpec(int size, int mode) { return size + mode; }

/** * Special value for the height or width requested by a View. * FILL_PARENT means that the view wants to fill the available space * within the parent, taking the parent's padding into account. */ public static final int FILL_PARENT = -1; /** * Special value for the height or width requested by a View. * WRAP_CONTENT means that the view wants to be just large enough to fit * its own internal content, taking its own padding into account. */ public static final int WRAP_CONTENT = -2;

我想应该是在解析XML的时候 FILL_PARENT=-(-1)>>30 WRAP_CONTENT=-(-2>>30) 猜测。。没找到证据。。。有谁能找到根我说句。。

通过上面的code就可以得到对应的 onMeasuere(int Widthspec,int HeighSpec)中对应的大小

比如我定义一个xml

android:layout_width="200px"

android:layout_height="500px"

对应的到的widhthSpec为EXACTLY +200;对应的HeightSpec为EXACTLY +500;

如果android:layout_width="wrap_content"-->widhtSpec=AT_MOST

android:layout_height="fill_parent"-->HeightSpec=EXACTLY

因为都会调用makeMeasureSpec来确定大小。比如在ViewGroup中的源码返回的

return MeasureSpec.makeMeasureSpec(resultSize, resultMode);

//这段代码太有才了。

public static int getSize(int measureSpec) {

return (measureSpec & ~MODE_MASK);

}

举个例子:

11&~10=1

2&~10=2

意思就是超过10的部分就用超过的部分比如11-10=1

没超过10的就用本事。比如2

这样的话,就可以用android:layout_width="200px" 和fill_parent等属性。

android measure相关推荐

  1. Android measure方法详解

    1. MeasureSpec类 MeasureSpec用来计算子视图的大小,有三种类型,UNSPECIFIED.EXACTLY和AT_MOST. UNSPECIFIED表示未定义,即父控件未做限制,可 ...

  2. android measure的时候报空指针

    1.使用listview的时候,在代码中动态设置其高度,在android低版本中,这个低版本是以4.4为界,会报measure的空指针,原因是低版本relativelayout有个bug,使用list ...

  3. View onMeasure 方法

    先看一篇博客 https://www.jianshu.com/p/3b6d0c17cdb0 再看这张图 image.png 1.这里的 AT_MOST.EXACTLY.UNSPECIFIED 分别对应 ...

  4. Android View框架的measure机制

    Android中View框架的工作机制中,主要有三个过程: 1.View树的测量(measure)Android View框架的measure机制 http://www.cnblogs.com/xyh ...

  5. Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析

    转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...

  6. Android View 测量流程(Measure)完全解析

    前言 上一篇文章,笔者主要讲述了DecorView以及ViewRootImpl相关的作用,这里回顾一下上一章所说的内容:DecorView是视图的顶级View,我们添加的布局文件是它的一个子布局,而V ...

  7. Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析(上)...

    在前面一篇文章中,我们分析了Android应用程序窗口的绘图表面的创建过程.Android应用程序窗口的绘图表面在创建完成之后,我们就可以从上到下地绘制它里面的各个视图了,即各个UI元素了.不过在绘制 ...

  8. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)

       本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...

  9. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)

    在之前一篇博文中<< Android中View绘制流程以及invalidate()等相关方法分析>> ,简单的阐述 了 Android View 绘制流程的三个步骤,即: 1. ...

最新文章

  1. 【PC工具】更新免费文库文档下载器,破解文库下载器,免费下载文库文档
  2. pandas 第一行_Pandas进阶,从0到100你还差这篇文章!
  3. 机器学习笔试题精选(七)
  4. 创建AOP静态代理(上篇)
  5. 2019年最值得关注的五大微服务发展趋势
  6. SQL Server 2005 高级程序设计 学习笔记(2)
  7. WCF技术剖析之十七:消息(Message)详解(下篇)
  8. 最优秀的5个Linux文本编辑器
  9. excel 单元格文本链接方法
  10. JavaSE基础——IO流详解(2)其他常用的流和Properties 集合
  11. App测试的11点建议
  12. 肯德尔系数怎么分析_2020LPL春季赛3月15日比赛数据的数据分析(Python)
  13. 基于JavaEE电子商务交易系统
  14. 【一、视频处理】FPGA驱动OV7725摄像头模块
  15. coodblock调试_codeblocks怎么调试?
  16. Java游戏宋朝角色扮演_穿越历史并不现实,但是有这样一款游戏,带你回到宋朝...
  17. 2020蚂蚁森林自动收能量-保持更新
  18. 近视眼学计算机好吗,听说,近视的人智商更高?
  19. iOS调试程序的方法
  20. java发送短信 短信平台

热门文章

  1. DSP、SSP、RTB、ADX(概念通俗解释)
  2. 解决WIN10隔几分钟就自动黑屏睡眠的方法!
  3. 艾伟_转载:一个.NET委托的故事:彼得,老板和宇宙
  4. java qq邮箱服务器端口_java qq 邮箱发送错误以及端口号
  5. 紫外测试样品要求及测试步骤
  6. Test 1D Degenerate Elliptical equation without Hamilton-Jacobi Part
  7. 高手的原则性、求道之心,和人际关系
  8. C语言中continue可以用于switch语句中吗?
  9. eas报错日记_EAS8.1预留记录查询报错
  10. Scala開發教程(1): 開始神奇的Scala編程之旅