Merge "Use motion event time instead of system time when detecting motion pause" into ub-launcher3-master
This commit is contained in:
committed by
Android (Google) Code Review
commit
01ec89a2ac
+4
-3
@@ -27,6 +27,7 @@ import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.view.HapticFeedbackConstants;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.LauncherState;
|
||||
@@ -96,9 +97,9 @@ public class FlingAndHoldTouchController extends PortraitStatesTouchController {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDrag(float displacement) {
|
||||
mMotionPauseDetector.addPosition(displacement, 0);
|
||||
return super.onDrag(displacement);
|
||||
public boolean onDrag(float displacement, MotionEvent event) {
|
||||
mMotionPauseDetector.addPosition(displacement, 0, event.getEventTime());
|
||||
return super.onDrag(displacement, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -170,7 +170,7 @@ public class AssistantTouchConsumer implements InputConsumer {
|
||||
// Movement
|
||||
mDistance = (float) Math.hypot(mLastPos.x - mStartDragPos.x,
|
||||
mLastPos.y - mStartDragPos.y);
|
||||
mMotionPauseDetector.addPosition(mDistance, 0);
|
||||
mMotionPauseDetector.addPosition(mDistance, 0, ev.getEventTime());
|
||||
if (mDistance >= 0) {
|
||||
final long diff = SystemClock.uptimeMillis() - mDragTime;
|
||||
mTimeFraction = Math.min(diff * 1f / mTimeThreshold, 1);
|
||||
|
||||
+2
-1
@@ -252,7 +252,8 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
|
||||
float orthogonalDisplacement = !isLandscape
|
||||
? ev.getX() - mDownPos.x
|
||||
: ev.getY() - mDownPos.y;
|
||||
mMotionPauseDetector.addPosition(displacement, orthogonalDisplacement);
|
||||
mMotionPauseDetector.addPosition(displacement, orthogonalDisplacement,
|
||||
ev.getEventTime());
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -17,7 +17,6 @@ package com.android.quickstep.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.os.SystemClock;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import com.android.launcher3.Alarm;
|
||||
@@ -80,7 +79,7 @@ public class MotionPauseDetector {
|
||||
*
|
||||
* TODO: Use historical positions as well, e.g. {@link MotionEvent#getHistoricalY(int, int)}.
|
||||
*/
|
||||
public void addPosition(float position, float orthogonalPosition) {
|
||||
public void addPosition(float position, float orthogonalPosition, long time) {
|
||||
if (mFirstPosition == null) {
|
||||
mFirstPosition = position;
|
||||
}
|
||||
@@ -88,7 +87,6 @@ public class MotionPauseDetector {
|
||||
mFirstOrthogonalPosition = orthogonalPosition;
|
||||
}
|
||||
mForcePauseTimeout.setAlarm(FORCE_PAUSE_TIMEOUT);
|
||||
long time = SystemClock.uptimeMillis();
|
||||
if (mPreviousTime != null && mPreviousPosition != null) {
|
||||
long changeInTime = Math.max(1, time - mPreviousTime);
|
||||
float changeInPosition = position - mPreviousPosition;
|
||||
|
||||
@@ -219,6 +219,10 @@ public class SwipeDetector {
|
||||
|
||||
boolean onDrag(float displacement);
|
||||
|
||||
default boolean onDrag(float displacement, MotionEvent event) {
|
||||
return onDrag(displacement);
|
||||
}
|
||||
|
||||
void onDragEnd(float velocity, boolean fling);
|
||||
}
|
||||
|
||||
@@ -307,7 +311,7 @@ public class SwipeDetector {
|
||||
setState(ScrollState.DRAGGING);
|
||||
}
|
||||
if (mState == ScrollState.DRAGGING) {
|
||||
reportDragging();
|
||||
reportDragging(ev);
|
||||
}
|
||||
mLastPos.set(ev.getX(pointerIndex), ev.getY(pointerIndex));
|
||||
break;
|
||||
@@ -359,14 +363,14 @@ public class SwipeDetector {
|
||||
return mDir.isPositive(mSubtractDisplacement);
|
||||
}
|
||||
|
||||
private boolean reportDragging() {
|
||||
private boolean reportDragging(MotionEvent event) {
|
||||
if (mDisplacement != mLastDisplacement) {
|
||||
if (DBG) {
|
||||
Log.d(TAG, String.format("onDrag disp=%.1f", mDisplacement));
|
||||
}
|
||||
|
||||
mLastDisplacement = mDisplacement;
|
||||
return mListener.onDrag(mDisplacement - mSubtractDisplacement);
|
||||
return mListener.onDrag(mDisplacement - mSubtractDisplacement, event);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user