2011-12-06 37 views
2

我正在評論Android SDK的ProgressBar.java源代碼。在android.widget.ProgressBar的191行就指出:ProgressBar.java的Android源代碼毫無意義

mMinHeight = a.getDimensionPixelSize(R.styleable.ProgressBar_minHeight, mMinHeight)); 

爲什麼在參數列表同時使用mMinHeight,因爲它正在初始化它?有人可以闡明這一點嗎?完整的源代碼可以位於grepcode

回答

4

在線171上看到它在哪裏調用initProgressBar?該方法將mMinHeight初始化爲24的值。然後對getDimensionPixelSize的調用將其用作默認值。

+0

哦,我錯過了。有時候很難細讀所有的源代碼,並且在一段時間後它會以意大利麪的形式出現。 –

1

第二個參數只是一個默認值,如果getDimensionPixelSize無法找到請求的值,應該返回該值。這是常見的(如果有點奇怪)傳入您試圖設置爲默認值的變量。實際上,這段代碼說「如果你有它,就設置這個值,或者如果你不這樣做就把它保留下來」。

+0

有趣,所以這就像JavaScript中的回調風格? –

+0

這不像是一個JavaScript回調。回調基本上只是傳遞一個函數(或其地址)作爲參數。這裏的Android方法只是使用用戶傳遞的默認值(可以定義爲任何類型,包括回調,如果您喜歡),並返回此默認值,如果它找不到實際值返回。 – MusiGenesis