美文网首页
理解MeasureSpec

理解MeasureSpec

作者: Leon_hy | 来源:发表于2016-04-14 22:26 被阅读2751次

MeasureSpec在很大程度上决定了一个View的尺寸规格,因为父容器影响View的MeasureSpec的创建过程。在测量过程中,系统会将View的LayoutParams根据父容器所施加的规则转换成对应的MeasureSpec,然后再根据这个MeasureSpec来测量出View的宽/高。 

1.MeasureSpec

MeasureSpec代表一个32位int值,高2位代表SpecMode,低30位代表SpecSize,SpecMode是指测量模式,而specSize是指在某种测量模式下的规格大小。

MeasureSpec通过SpecMode和SpecSize打包成int值来避免过多对象内存分配,为了方便操作,其提供了打包和解包的方法。SpecModel和SpecSize也是一个int值,一组SpecMode和SpecSize可以打包为一个MeasureSpec,而一个MeasureSpec可以通过解包的形式来得出其原始的SpecMode和SpecSize,需要注意的是这里提到的MeasureSpec是指MeasureSpec所代表的int值,而并非MeasureSpec本身。

SPecMode有三类,每一类都表示特殊的含义,如下所示

UNSPECIFIED

父容器不对View有任何限制,要多大给多大,这种情况一般用于系统内部,表示一种测量的状态。

EXACTLY

父容器已经测量出View所需要的精确大小,这个时候View的最终大小就是SpecSize所指定的值。它对应于LayoutParams中的match_parent和具体的数值这两种模式。

AT_MOST

父容器指定了一个可用大小即SpecSize,View大小不能大于这个值,具体是什么值要看不同View的具体实现。它对应于LayoutParams中的Wrap_content

文章摘抄自《Android 开发艺术探索》

相关文章

  • 理解MeasureSpec

    4.2 理解MeasureSpec 为了更好地理解View的测量过程,我们还需要理解MeasureSpec。从名字...

  • 理解MeasureSpec

    MeasureSpec在很大程度上决定了一个View的尺寸规格,因为父容器影响View的MeasureSpec的创...

  • 理解MeasureSpec

    MeasureSpec是View的一个静态内部类,它通过将SpecMode和SpecSize打包成一个int值来避...

  • 理解MeasureSpec

    1.左移和右移 java中的移位运算符有三种: 左移<<左移就是将左边的操作数在内存中的二进制数据左移指定的位数,...

  • MeasureSpec 理解

    MeasureSpec 封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求 ...

  • MeasureSpec理解

    简要   今天来聊聊MeasureSpec,记得刚接触的也感觉很难理解,知其然不知其所以然。MeasureSpec...

  • Android 理解MeasureSpec

    Android View 的测量过程中使用到了MeasureSpec,正如其字面意思所表达的那个-“测量规格”。V...

  • 简单理解MeasureSpec

    MeasureSpec在很大程度上决定了一个View的尺寸规格,因为父容器影响View的MeasureSpec的创...

  • 4.2 理解MeasureSpec

    1. MeasureSpec MeasureSpec代表一个32位的int值,高2位代表SpecMode,低30位...

  • 重新理解MeasureSpec

    1 概述 网上有许多非常好的文章都在介绍MeasureSpec的测量规则,但是没有介绍MeasureSpec的作用...

网友评论

      本文标题:理解MeasureSpec

      本文链接:https://www.haomeiwen.com/subject/pgaglttx.html