0
我已經看過源代碼。我已閱讀文檔。但我仍然不明白這兩個值如何比較和對比。我也很驚訝地看到getMeasuredHeight vs getMeasuredHeightAndState
public final int getMeasuredHeight() {
return mMeasuredHeight & MEASURED_SIZE_MASK;
}
爲什麼按位AND?
我已經看過源代碼。我已閱讀文檔。但我仍然不明白這兩個值如何比較和對比。我也很驚訝地看到getMeasuredHeight vs getMeasuredHeightAndState
public final int getMeasuredHeight() {
return mMeasuredHeight & MEASURED_SIZE_MASK;
}
爲什麼按位AND?
mMeasuredHeight是一個整數值,它包含有關視圖的兩條截然不同的信息。
顯然,第一件是尺寸。視圖可以具有合理的最大高度,並且遠小於最大整數。因此,您可以使用整數值中的最高位來設置標誌。
在這種情況下,被設置的標誌是MEASURED_STATE_TOO_SMALL,這是第二塊。通過將該位設置爲1,視圖聲明「測量的大小小於視圖想要擁有的空間」。
getMeasuredHeight通過使用原始像素值的任何函數執行按位AND操作以消除該位。