2012-07-04 42 views
2

我剛開始學習android開發(和Java的事),並試圖修改Sliding Drawer小部件。我注意到經歷,我覺得像行代碼:差異getHeight()vs mBottom - mTop

final int childHeight = mHandleHeight; 
int height = mBottom - mTop - childHeight - mTopOffset; 

爲什麼「mBottom - Mtop中」使用的getHeight()而不是?另外,爲什麼當mHandleHeight已經存在時爲childHeight專門創建一個變量?

代碼:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/widget/SlidingDrawer.java?av=f 線637

編輯:改變在參考代碼第二線;這些變量(mBottom,mTop)在編寫我們自己的視圖時不可用,所以我們必須使用方法'getTop()'和'getBottom()'。

+0

我不能肯定地說沒有看到整個代碼,但指定高度的行不僅僅給出了窗口小部件的高度。它給出了小部件的高度MINUS子高度和頂部偏移量。我認爲這會給'getHeight()'一個不同的值。 – DrBards

+0

我明白高度變量應該代表什麼,我的問題是:'mBottom - mTop'和'getHeight()'有區別嗎?如果沒有某種差異,我懷疑這個小部件的作者會使用後者的選項來清晰和簡潔。 – Rollie

回答

1

呃,我不知道爲什麼我不只是看ViewGroup的代碼開始,我不習慣我的SDK是如此開放/隨時可用:) http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/view/View.java#View.getHeight%28%29顯示了函數的定義,這是簡單的

6956  public final int getHeight() { 
6957   return mBottom - mTop; 
6958  } 

因爲這是問題的主要觀點,我會標記爲一旦我可以回答,並希望有人從中受益。仍然不知道爲什麼額外的變量;也許在多線程環境中,mChildHeight可以改變中間函數,所以你想要一個快照。