it's either DOWN [ -> MOVE ] -> UP or DOWN [ -> MOVE ] -> CANCEL
but ACTION_UP always follows ACTION_DOWN
to check for a quick touch, mark the down location (x&y) and then make sure that the UP location is within TOUCH_SLOP (ViewConfiguration.getScaledTouchSlop()) of the down location.