MeasureSpec.getMode() 如何从整数值中提取模式?

How can MeasureSpec.getMode() extract a mode from an integer value?

我正在学习 Professional Android 4 Application Development 的第 4 章,它告诉我大小值 模式都是从 widthMeasureSpec 和传递给自定义视图的 onMeasure() 方法的 heightMeasureSpec 值。除了整数原语之外,那些不必是其他数据结构来实现这一点吗?这些整数的编码方式是否可以手动覆盖它们的值?

模式为 EXACTLY、AT_MOST 或 UNSPECIFIED。所以从技术上讲,它只需要两位来存储模式。如果您查看它们的值,EXACTLY 是 0x80000000,AT_MOST 是 0x40000000,UNSPECIFIED 是 0x00000000。他们取 int 的前两位并将它们与大小进行 OR 运算以获得 MeasureSpec。这可能是早期 Android 的遗留问题,当时设备 确实 没有很多内存,因此他们尽可能地节省内存。