MeasureSpec是View.java中的一个静态类:

public static class MeasureSpec {    private static final int MODE_SHIFT = 30;    private static final int MODE_MASK  = 0x3 << MODE_SHIFT;    // 父容器对子View没有任何限制,子View可以为任何值。    public static final int UNSPECIFIED = 0 << MODE_SHIFT;    // 父容器指定了子View精确的大小    public static final int EXACTLY     = 1 << MODE_SHIFT;    // 父容器指定了子View的最大值    public static final int AT_MOST     = 2 << MODE_SHIFT;     public static int makeMeasureSpec(@IntRange(from = 0, to = (1 << MeasureSpec.MODE_SHIFT) - 1) int size, @MeasureSpecMode int mode) {        if (sUseBrokenMakeMeasureSpec) {            return size + mode;        } else {            return (size & ~MODE_MASK) | (mode & MODE_MASK);        }    }    public static int getMode(int measureSpec) {        return (measureSpec & MODE_MASK);    }    public static int getSize(int measureSpec) {        return (measureSpec & ~MODE_MASK);    }}

UNSPECIFIED:表示父容器对于子View没有任何限制,子View可以为任何值。

EXACTLY:表示父容器制定了子View精确的大小。

AT_MOST:表示父容器指定了子View的最大值。

MeasureSpec是由一个int值表示的。其中,int值的最高2位表示SpecMode,其余30位表示SpecSize。

M_{1} M_{0} S_{29} S_{28} S_{27} \cdots S_{2} S_{1} S_{0} 为MeasureSpec所代表的int值,为总共32位,最高位是 M_{1} ,最低位是 S_{0}

其中,M_{1} M_{0} 表示SpecMode,S_{29} S_{28} S_{27} \cdots S_{2} S_{1} S_{0} 表示SpecSize。

 

 

 

 

更多相关文章

  1. 修改Android中Layout布局文件字体的大小
  2. Android查看各分区空间大小命令及相关操作
  3. android获取有效可用存储空间大小
  4. Android杂谈---获取手机屏幕大小
  5. android Html.fromHtml font 标签支持设置字体大小和颜色
  6. Android利用系统提供的函数或常量判断版本大小
  7. Android自适应不同分辨率或不同屏幕大小
  8. Android中获取应用程序(包)的大小-----PackageManager的使用(二)
  9. Android图片左右切换和拖动大小

随机推荐

  1. ubuntu 18.04编译Android(安卓)7.1源码
  2. [置顶] Android(安卓)Retrofit 2.0框架上
  3. Android(安卓)—— EventBus使用简介
  4. android Default Activity not found
  5. Android之装饰者模式
  6. Android(安卓)消息数字提示,类似微信,Badge
  7. Android复习笔记(11) -网络编程相关
  8. Android(安卓)输入框获取焦点后改变颜色
  9. java 非静态内部类为什么持有外部类的引
  10. toolbar自定义右边的菜单注意