2016-04-29 20 views
0

我已經看過源代碼。我已閱讀文檔。但我仍然不明白這兩個值如何比較和對比。我也很驚訝地看到getMeasuredHeight vs getMeasuredHeightAndState

public final int getMeasuredHeight() { 
    return mMeasuredHeight & MEASURED_SIZE_MASK; 
} 

爲什麼按位AND?

回答

0

mMeasuredHeight是一個整數值,它包含有關視圖的兩條截然不同的信息。

顯然,第一件是尺寸。視圖可以具有合理的最大高度,並且遠小於最大整數。因此,您可以使用整數值中的最高位來設置標誌。

在這種情況下,被設置的標誌是MEASURED_STATE_TOO_SMALL,這是第二塊。通過將該位設置爲1,視圖聲明「測量的大小小於視圖想要擁有的空間」。

getMeasuredHeight通過使用原始像素值的任何函數執行按位AND操作以消除該位。

相關問題