Code example for VelocityTracker

Methods: addMovement, computeCurrentVelocity, getXVelocity, getYVelocity, recycle

1
                if (mVelocityTracker == null) {
                    break; 
                } 
 
                float deltaX = motionEvent.getRawX() - mDownX;
                mVelocityTracker.addMovement(motionEvent);
                mVelocityTracker.computeCurrentVelocity(1000);
                float velocityX = mVelocityTracker.getXVelocity();
                float absVelocityX = Math.abs(velocityX);
                float absVelocityY = Math.abs(mVelocityTracker.getYVelocity());
                boolean dismiss = false;
                boolean dismissRight = false;
                if (Math.abs(deltaX) > mViewWidth / 2) {
                    dismiss = true;
                    dismissRight = deltaX > 0;
                } else if (mMinFlingVelocity <= absVelocityX
                        && absVelocityX <= mMaxFlingVelocity
                        && absVelocityY < absVelocityX) {
                    // dismiss only if flinging in the same direction as dragging 
                    dismiss = (velocityX < 0) == (deltaX < 0);
                    dismissRight = mVelocityTracker.getXVelocity() > 0;
                } 
                if (dismiss) {
                    // dismiss 
 
                    mCardView.animate()
                            .translationX(dismissRight ? mViewWidth : -mViewWidth)
                            .alpha(0).setDuration(mAnimationTime)
                            .setListener(new AnimatorListenerAdapter() {
                                @Override 
                                public void onAnimationEnd(Animator animation) {
                                    performDismiss(); 
                                } 
                            }); 
                } else { 
                    // cancel 
                    mCardView.animate().translationX(0).alpha(1)
                            .setDuration(mAnimationTime).setListener(null);
                } 
                mVelocityTracker.recycle();
                mVelocityTracker = null;
                mDownX = 0;
                mSwiping = false;
                break; 
            }