/** * Start fling animation(Y coordinate) * * @param velocityY velocity Y coordinate */ private void startFlingAnimationY(float velocityY) { final FlingAnimation flingAnimationY = new FlingAnimation(new FloatValueHolder()); flingAnimationY.setStartVelocity(velocityY); flingAnimationY.setMaxValue(mPositionLimitRect.bottom); flingAnimationY.setMinValue(mPositionLimitRect.top); flingAnimationY.setStartValue(mParams.y); flingAnimationY.setFriction(ANIMATION_FLING_Y_FRICTION); flingAnimationY.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_PIXELS); flingAnimationY.addUpdateListener(new DynamicAnimation.OnAnimationUpdateListener() { @Override public void onAnimationUpdate(DynamicAnimation animation, float value, float velocity) { final int y = Math.round(value); // Not moving, or the touch operation is continuing if (mParams.y == y || mVelocityTracker != null) { return; } // update y coordinate mParams.y = y; updateViewLayout(); } }); flingAnimationY.start(); }
/** * Start fling animation(X coordinate) * * @param velocityX velocity X coordinate */ private void startFlingAnimationX(float velocityX) { final FlingAnimation flingAnimationX = new FlingAnimation(new FloatValueHolder()); flingAnimationX.setStartVelocity(velocityX); flingAnimationX.setMaxValue(mPositionLimitRect.right); flingAnimationX.setMinValue(mPositionLimitRect.left); flingAnimationX.setStartValue(mParams.x); flingAnimationX.setFriction(ANIMATION_FLING_X_FRICTION); flingAnimationX.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_PIXELS); flingAnimationX.addUpdateListener(new DynamicAnimation.OnAnimationUpdateListener() { @Override public void onAnimationUpdate(DynamicAnimation animation, float value, float velocity) { final int x = Math.round(value); // Not moving, or the touch operation is continuing if (mParams.x == x || mVelocityTracker != null) { return; } // update y coordinate mParams.x = x; updateViewLayout(); } }); flingAnimationX.start(); }
final SpringAnimation springAnimationY = new SpringAnimation(new FloatValueHolder()); springAnimationY.setStartVelocity(velocityY); springAnimationY.setStartValue(mParams.y);
springX.setStiffness(ANIMATION_SPRING_X_STIFFNESS); final SpringAnimation springAnimationX = new SpringAnimation(new FloatValueHolder()); springAnimationX.setStartVelocity(mVelocityTracker.getXVelocity()); springAnimationX.setStartValue(mParams.x);