Merge "Use motion event time instead of system time when detecting motion pause" into ub-launcher3-master

This commit is contained in:
TreeHugger Robot
2019-04-03 19:43:27 +00:00
committed by Android (Google) Code Review
5 changed files with 15 additions and 11 deletions
@@ -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
@@ -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);
@@ -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;
}