我正在开发一个应用程序,它要求我手动处理fling过程而不是将其提供给框架.我想要实现的是基本上计算listview在收到fling动作时移动的像素数量.由于滚动方法已经提供了三角形的距离,我已经轻松处理了它.但是有没有办法获得投掷距离,因为在超级方法中只传递速度参数.
注意 - 我必须根据投掷距离移动另一个视图,所以我需要同时获取它,就像onScroll提供它一样.谢谢.
已经过去3年了,但还没有答案。我找到了一些解决方法来实现它。
实际上这是一种高级主题,因为有很多细微差别,但基本上你可以参考 Android 源代码(特别是 OverScroller 类)并使用此方法。您需要将其复制到您的类中并使用它。
private double getSplineFlingDistance(int velocity) {
final double l = getSplineDeceleration(velocity);
final double decelMinusOne = DECELERATION_RATE - 1.0;
return mFlingFriction * PHYSICAL_COEF * Math.exp(DECELERATION_RATE / decelMinusOne * l);
}
Run Code Online (Sandbox Code Playgroud)
其他方法和值可以从同一个类中获取。源代码链接:https://android.googlesource.com/platform/frameworks/base/+/jb-release/core/java/android/widget/OverScroller.java
请记住,在某些设备中,该值可能会有所不同(不会太大)。一些供应商根据自己的要求和硬件更改公式以使其更加平滑。
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |