Kinetic scroll

Use a kinetic scroll animation in response to a flick gesture to move an object in a given direction, at a given speed, and with a given frictional coefficient. The movement follows a linear trajectory and is based on decreasing speed at a fixed frame rate. The FrameAnimatorListener.animate method is called at regular intervals with the updated position.

To trigger a kinetic scroll animation, use the FrameAnimator.kineticScroll method:

FrameAnimator.kineticScroll(int startSpeed, int direction, int friction, float angle);

The method takes the following parameters:

  • startSpeed specifies the initial speed of movement in pixels per second, before any deceleration is applied. Use the flick speed value from the flick event:

    int startSpeed = gestureEvent.getFlickSpeed();

  • direction specifies the direction of movement. The possible values are:

    • FrameAnimator.FRAME_ANIMATOR_FREE_ANGLE allows kinetic scrolling in any direction.

    • FrameAnimator.FRAME_ANIMATOR_HORIZONTAL allows kinetic scrolling along the horizontal axis.

    • FrameAnimator.FRAME_ANIMATOR_VERTICAL allows kinetic scrolling along the vertical axis.

  • friction specifies the amount of friction applied to the movement. The possible values are:

    • FrameAnimator.FRAME_ANIMATOR_FRICTION_LOW applies slow deceleration.

    • FrameAnimator.FRAME_ANIMATOR_FRICTION_MEDIUM applies medium deceleration.

    • FrameAnimator.FRAME_ANIMATOR_FRICTION_HIGH applies fast deceleration.

    This parameter allows the MIDlet to vary the rate of deceleration of the animation. A lower friction value causes the animation to slow down gradually and cover more distance. A higher friction value causes the animation to slow down quicker and cover less distance.

  • angle specifies the direction of the flick gesture in radians. Use the flick direction value from the flick event:

    float angle = gestureEvent.getFlickDirection();