少し前に、目的のためにある種のリストビューを書き始めましたが、昨日、スクロール動作で奇妙なことが起こったためにイライラしました。デフォルトandroid.widget.Scroller
クラスの実装のソース コードを読んだところ、見た目よりも単純であることがわかりました。石のような運動学の法則があります。残念ながら、フリング中のある時点で減速度を上げることにしたとき、現在の速度が常に正しく計算されていないことに気付きました。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による除算は何ですか??? 物理的に正しい方法に変更したので
public float getCurrVelocity() {
return mVelocity - mDeceleration * timePassed() / 1000.0f;
}
私のSping効果はうまくいきます。
問題は、なぜ 2 による除算があるのかということです。それとも、このメソッドは非表示になっており、Scroller クラス内でローカルに呼び出されていないため、単なる間違いですか?