2016-04-29 11 views
0

私はすでにソースコードを見てきました。私はドキュメントを読んだ。しかし、私はまだこれらの2つの値がどのように比較され、コントラストがどうか分からない。また、私は驚きましたgetMeasuredHeightとgetMeasuredHeightAndState

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

どうしてビット単位のAND?

答えて

0

mMeasuredHeightは、ビューに関する2つの異なる情報を含む1つの整数値です。

明らかに、最初の部分はサイズです。ビューが持つことができる合理的な最大の高さがあり、それは最大の整数よりはるかに小さいです。したがって、整数値の最上位ビットを使用してフラグを設定できます。

この場合、設定されているフラグはMEASURED_STATE_TOO_SMALLです。これは2番目の部分です。このビットを1に設定することにより、ビューは「測定されたサイズがビューが望むスペースよりも小さい」と宣言しています。

getMeasuredHeightは、生のピクセル値を使用する任意の関数によってそのビットを削除するビット単位のANDを実行します。

関連する問題