2019-01-14-左移和数字Mask
- MeasureSpec使用0x3 « 30作为MODE_MASK mMeasuredHeight使用0x00ffffff作为MEASURED_SIZE_MASK
1)移位操作(0x代表后面是16进制数字,移位操作类似乘法,花费更短的时间)
0x3 >> 2 = 0
0x3 >> 1 = 1
0x3 << 1 = 6
0x3 << 2 = 12
0x3即 11,移位之后为 110,1100;
移位30即 11+30个0;
2)Integer
Integer的总共32位,4个字节;所以0x3移位30占据最高的2个字节.
3)Mask
measureSpec & MODE_MASK 为高2位 总共4个表示;
00 :UNSPECIFIED
01 :EXACTLY
10 :AT_MOST
11 :无
measureSpec & ~MODE_MASK 为低30位;
参考资料: View.MeasureSpec源码