前段时间我开始为我的目的编写某种列表视图,昨天由于滚动行为发生了奇怪的事情,我感到很沮丧。
我已经阅读了默认的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类中没有被本地调用?
答案 0 :(得分:0)
我认为Scroller类也有问题,但我没有像你一样对代码进行评估。
我建议尝试使用新的android.widget.OverScroller类。它似乎更适当地处理各种速度。它是在API级别9中添加的,它是姜饼。