Stop rejecting valid flings in quick contacts

I continue to regret basing MultiShrinkScroller off of
ScrollableViewGroup instead of directly basing it off of the
less buggy ScrollView code.

* Previously we only tracked velocity inside onTouch.
  Now, we will also track it in onInterceptTouchEvent, similarly
  to ViewDragHelper. This will result in double tracking of
  some events. This isn't a problem: VelocityTracker.cpp considers
  the timestamp when performing the velocity calculation.
* Don't dismiss vertical flings simply because they also contain
  a horizontal fling

Bug: 17919260
Change-Id: Ic0e512633dd6d99b1e55adfb56a57e4f170f2e73
diff --git a/src/com/android/contacts/widget/MultiShrinkScroller.java b/src/com/android/contacts/widget/MultiShrinkScroller.java
index dfec204..cf32aa1 100644
--- a/src/com/android/contacts/widget/MultiShrinkScroller.java
+++ b/src/com/android/contacts/widget/MultiShrinkScroller.java
@@ -389,6 +389,11 @@
 
     @Override
     public boolean onInterceptTouchEvent(MotionEvent event) {
+        if (mVelocityTracker == null) {
+            mVelocityTracker = VelocityTracker.obtain();
+        }
+        mVelocityTracker.addMovement(event);
+
         // The only time we want to intercept touch events is when we are being dragged.
         return shouldStartDrag(event);
     }
@@ -1157,11 +1162,8 @@
     }
 
     private boolean motionShouldStartDrag(MotionEvent event) {
-        final float deltaX = event.getX() - mLastEventPosition[0];
         final float deltaY = event.getY() - mLastEventPosition[1];
-        final boolean draggedX = (deltaX > mTouchSlop || deltaX < -mTouchSlop);
-        final boolean draggedY = (deltaY > mTouchSlop || deltaY < -mTouchSlop);
-        return draggedY && !draggedX;
+        return deltaY > mTouchSlop || deltaY < -mTouchSlop;
     }
 
     private float updatePositionAndComputeDelta(MotionEvent event) {