2012-10-23 41 views
0

前段時間我開始爲我的目的寫一些列表視圖,昨天我因滾動行爲發生了一些奇怪的事情而感到沮喪。 我已經閱讀了默認的android.widget.Scroller類實現的源代碼,並注意到事情比他們看起來更簡單。有運動學定律被當作石頭。不幸的是,當我決定增加一些點的減速時,我注意到當前的速度並不總是正確計算。在回顧Scroller源代碼之後,我意識到當前的速度總是錯誤地計算出來的。有計算的滾動條的當前速度的隱伏方法:Android Scroller:當前速度計算

/** 
* @hide 
* Returns the current velocity. 
* 
* @return The original velocity less the deceleration. Result may be 
* negative. 
*/ 
public float getCurrVelocity() { 
    return mVelocity - mDeceleration * timePassed()/2000.0f; 
} 

正如你可以看到有Vfinal = Vsource - a * t/2 ......但對於什麼是除以2 ??? 既然我已經改成了phisically正確的方法

public float getCurrVelocity() { 
    return mVelocity - mDeceleration * timePassed()/1000.0f; 
} 

我的影響蔓延擴散工作正常。

所以問題是爲什麼除以2?或者這只是一個錯誤,因爲這種方法是隱藏的,並沒有在Scroller類中本地調用?

回答

0

我認爲Scroller類也有問題,但我沒有像你那樣對代碼進行評估。

我推薦嘗試使用新的android.widget.OverScroller類。它似乎更適當地處理各種速度。它被添加到API級別9,這是薑餅。