Android Scroller:当前速度计算

时间:2012-10-23 06:46:26

标签: android scroller

前段时间我开始为我的目的编写某种列表视图,昨天由于滚动行为发生了奇怪的事情,我感到很沮丧。 我已经阅读了默认的android.widget.Scroller类实现的源代码,并注意到事情比它们看起来更简单。运动学定律被视为石头。不幸的是,当我决定在投掷时在某个时刻增加减速度时,我注意到当前的速度并不总能正确计算。在查看了Scroller源代码之后,我意识到当前的速度总是被错误地计算出来。有一个hiden方法可以计算滚动条的当前速度:

/**
 * @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为??? 因为我把它改成了正确的方法

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

我的sping效果很好。

所以问题是为什么有2除法?或者它只是一个错误,因为这个方法是隐藏的,并且在Scroller类中没有被本地调用?

1 个答案:

答案 0 :(得分:0)

我认为Scroller类也有问题,但我没有像你一样对代码进行评估。

我建议尝试使用新的android.widget.OverScroller类。它似乎更适当地处理各种速度。它是在API级别9中添加的,它是姜饼。