Exception if receive move withouth down
Throw an IllegalStateException if recevie touch move without down, that could give an explicit feedback about GestureDetector may not receive the full touch stream. Bug: 149578486 Test: manual Change-Id: I644ec1bebbca66dd0f0c219b63a6478b1290d1e1
This commit is contained in:
@@ -288,6 +288,11 @@ public class GestureDetector {
|
||||
*/
|
||||
private VelocityTracker mVelocityTracker;
|
||||
|
||||
/**
|
||||
* True if the detector can throw exception when touch steam is unexpected .
|
||||
*/
|
||||
private boolean mExceptionForTouchStream;
|
||||
|
||||
/**
|
||||
* Consistency verifier for debugging purposes.
|
||||
*/
|
||||
@@ -467,6 +472,8 @@ public class GestureDetector {
|
||||
mTouchSlopSquare = touchSlop * touchSlop;
|
||||
mDoubleTapTouchSlopSquare = doubleTapTouchSlop * doubleTapTouchSlop;
|
||||
mDoubleTapSlopSquare = doubleTapSlop * doubleTapSlop;
|
||||
mExceptionForTouchStream = context != null
|
||||
&& context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.R;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -639,6 +646,13 @@ public class GestureDetector {
|
||||
break;
|
||||
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
if (mExceptionForTouchStream && !mStillDown) {
|
||||
throw new IllegalStateException("Incomplete event stream received: "
|
||||
+ "Received ACTION_MOVE before ACTION_DOWN. ACTION_DOWN must precede "
|
||||
+ "ACTION_MOVE following ACTION_UP or ACTION_CANCEL, or when this "
|
||||
+ "GestureDetector has not yet received any events.");
|
||||
}
|
||||
|
||||
if (mInLongPress || mInContextClick) {
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user