获取Android中的fling持续时间

时间:2014-10-08 00:56:23

标签: android

Scroller类中的getDuration方法获取滚动的持续时间。

我们可以使用这种方法来获取投掷的持续时间吗?或者还有其他方法吗?

public final int getDuration ()

Returns how long the scroll event will take, in milliseconds.

Returns
The duration of the scroll in milliseconds.

1 个答案:

答案 0 :(得分:1)

  

我们可以使用这种方法来获取投掷的持续时间吗?或者是   还有其他办法吗?

由于持续时间将在投掷开始时计算,因此在投掷期间使用该方法获得的持续时间无疑是投注的持续时间。

BTW,此持续时间取决于投掷的初始速度。以下是Scroller的代码片段,您可以看到它是如何计算的:

    /**
     * Returns how long the scroll event will take, in milliseconds.
     * 
     * @return The duration of the scroll in milliseconds.
     */
    public final int getDuration() {
        return mDuration;
    }

   // Code in the fling() method which will be called based on a fling gesture
   mDuration = getSplineFlingDuration(velocity);

    // The essential method.
    private int getSplineFlingDuration(float velocity) {
        final double l = getSplineDeceleration(velocity);
        final double decelMinusOne = DECELERATION_RATE - 1.0;
        return (int) (1000.0 * Math.exp(l / decelMinusOne));
    }
    private double getSplineDeceleration(float velocity) {
        return Math.log(INFLEXION * Math.abs(velocity) / (mFlingFriction * mPhysicalCoeff));
    }

<强>更新

  

如何在投掷开始时计算持续时间?

&#34;在开始时#34;表示当Scroller的用户检测到一个fling手势时。如果他想使用Scroller的fling函数,他应该使用适当的参数调用以下方法:

  public void fling(int startX, int startY, int velocityX, int velocityY,
            int minX, int maxX, int minY, int maxY) 

持续时间在上方法内计算。它首先用velocityX和velocityY计算总速度,然后将速度传递给getSplineFlingDuration()方法以获得一个投掷持续时间。我最初粘贴该方法的代码,我认为这并不难你明白了。