理解MeasureSpec
16lz
2021-01-23
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。
为MeasureSpec所代表的int值,为总共32位,最高位是 ,最低位是 。
其中, 表示SpecMode, 表示SpecSize。
更多相关文章
- 修改Android中Layout布局文件字体的大小
- Android查看各分区空间大小命令及相关操作
- android获取有效可用存储空间大小
- Android杂谈---获取手机屏幕大小
- android Html.fromHtml font 标签支持设置字体大小和颜色
- Android利用系统提供的函数或常量判断版本大小
- Android自适应不同分辨率或不同屏幕大小
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
- Android图片左右切换和拖动大小