天天看點

Android View之測量

Android系統在繪制View之前,必須對View進行測量。Android提供的一個MeasureSpec類,來幫助我們測量View。MeasureSpec是一個32位的int值,其中高2位為測量的模式,低30位為測量的大小,在計算中使用位運算的原因是為了提供并優化效率,在自定義View的時候,同過重寫onMeasure()方法來測量View的大小。

測試的模式為可以分為以下三種:

1、          EXACTLY(精确模式);即當我們為控件的高寬指定一個具體的大小,或者控件的高寬為比對父控件的時候,系統使用的是EXACTLY。

2、          AT_MOST(最大模式);即當我們為控件的高寬的大小是包含内容的時候。

3、          UNSPECIFIED(不指定其大小模式) 這種這種情況不多,一般在父控件為AdpterView,通過measure方法傳入的模式,是以在onMeasure()方法是要根據模式不同進行尺寸大小的計算。

   View預設的onMeasure方法隻支援EXACTLY模式,是以在自定義View的時候,如果在自定義控件的時候不重寫onMeasure方法的時候,使用的隻能是EXACTLY模式。

Android View之測量

沖View源碼onMeasure()方法可以看出,系統通過setMeasureDimension(int measuredWidth,intmeasreHegh