我正在学习《专业 Android 4 应用程序开发》的第 4 章,它告诉我尺寸值和模式都是从传递给 onMeasure() 方法的 widthMeasureSpec 和 heightMeasureSpec 值中提取的的自定义 View 。那些不是必须是整数基元以外的其他数据结构才能实现此目的吗?这些整数的编码方式是否可以手动覆盖它们的值?
最佳答案
模式可以是 EXACTLY、AT_MOST 或 UNSPECIFIED。因此从技术上讲,只需要两位来存储模式。如果你查看它们的值,就会发现 EXACTLY 是 0x80000000,AT_MOST 是 0x40000000,UNSPECIFIED 是 0x00000000。他们获取 int 的前两位,并将它们与大小进行“或”运算以获得 MeasureSpec。这可能是早期 Android 的遗留问题,当时设备实际上没有太多内存,因此他们试图尽可能节省内存。
关于java - MeasureSpec.getMode() 如何从整数值中提取众数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32663864/