我们先看下基础知识
好了,下面看MeasureSpec中的按位运算、移位运算:
android经常会有类似如图,(0的二进制数为00)00左移30位,达到的目的就是去形成一个32位的值
1将图2可以用图3解释
2 3~ 这个符号是求反,0变1,1变0,~MODE_MASK=11111111,11111111,11111111,11111111
& 这个符号为与运算,两个二进制值完全一样才会得1,不同则为0
或运算如下图
打包的规则是:将左边size转换为32位,将右边mode转换为32位,然后进行或运算。前两位作为mode,后30位作为size
网友评论