Merge "Additional Assistant gesture tuning" into ub-launcher3-qt-dev

This commit is contained in:
TreeHugger Robot
2019-04-24 20:57:21 +00:00
committed by Android (Google) Code Review
6 changed files with 27 additions and 24 deletions
@@ -38,7 +38,6 @@ import android.util.Log;
import android.view.MotionEvent;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.logging.UserEventDispatcher;
import com.android.quickstep.util.MotionPauseDetector;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.launcher3.R;
import com.android.systemui.shared.system.InputMonitorCompat;
@@ -82,7 +81,6 @@ public class AssistantTouchConsumer implements InputConsumer {
private final long mTimeThreshold;
private final int mAngleThreshold;
private final float mSlop;
private final MotionPauseDetector mMotionPauseDetector;
private final ISystemUiProxy mSysUiProxy;
private final InputConsumer mConsumerDelegate;
private final Context mContext;
@@ -96,11 +94,10 @@ public class AssistantTouchConsumer implements InputConsumer {
mContext = context;
mSysUiProxy = systemUiProxy;
mConsumerDelegate = delegate;
mMotionPauseDetector = new MotionPauseDetector(context);
mDistThreshold = res.getDimension(R.dimen.gestures_assistant_drag_threshold);
mTimeThreshold = res.getInteger(R.integer.assistant_gesture_min_time_threshold);
mAngleThreshold = res.getInteger(R.integer.assistant_gesture_corner_deg_threshold);
mSlop = NavigationBarCompat.getQuickScrubTouchSlopPx();
mSlop = NavigationBarCompat.getQuickStepDragSlopPx();
mInputMonitorCompat = inputMonitorCompat;
mState = STATE_INACTIVE;
}
@@ -111,8 +108,18 @@ public class AssistantTouchConsumer implements InputConsumer {
}
@Override
public boolean isActive() {
return mState != STATE_INACTIVE;
public boolean useSharedSwipeState() {
if (mConsumerDelegate != null) {
return mConsumerDelegate.useSharedSwipeState();
}
return false;
}
@Override
public void onConsumerAboutToBeSwitched() {
if (mConsumerDelegate != null) {
mConsumerDelegate.onConsumerAboutToBeSwitched();
}
}
@Override
@@ -125,14 +132,6 @@ public class AssistantTouchConsumer implements InputConsumer {
mDownPos.set(ev.getX(), ev.getY());
mLastPos.set(mDownPos);
mTimeFraction = 0;
// Detect when the gesture decelerates to start the assistant
mMotionPauseDetector.setOnMotionPauseListener(isPaused -> {
if (isPaused && mState == STATE_ASSISTANT_ACTIVE) {
mTimeFraction = 1;
updateAssistantProgress();
}
});
break;
}
case ACTION_POINTER_UP: {
@@ -175,7 +174,7 @@ public class AssistantTouchConsumer implements InputConsumer {
mDirection = angle > 90 ? UPLEFT : UPRIGHT;
angle = angle > 90 ? 180 - angle : angle;
if (angle > mAngleThreshold && angle < 90 - mAngleThreshold) {
if (angle > mAngleThreshold && angle < 90) {
mState = STATE_ASSISTANT_ACTIVE;
if (mConsumerDelegate != null) {
@@ -193,7 +192,6 @@ public class AssistantTouchConsumer implements InputConsumer {
// Movement
mDistance = (float) Math.hypot(mLastPos.x - mStartDragPos.x,
mLastPos.y - mStartDragPos.y);
mMotionPauseDetector.addPosition(mDistance, 0, ev.getEventTime());
if (mDistance >= 0) {
final long diff = SystemClock.uptimeMillis() - mDragTime;
mTimeFraction = Math.min(diff * 1f / mTimeThreshold, 1);
@@ -222,8 +220,8 @@ public class AssistantTouchConsumer implements InputConsumer {
animator.setInterpolator(Interpolators.DEACCEL_2);
animator.start();
}
mPassedSlop = false;
mState = STATE_INACTIVE;
mMotionPauseDetector.clear();
break;
}
@@ -243,6 +241,7 @@ public class AssistantTouchConsumer implements InputConsumer {
SWIPE, mDirection, NAVBAR);
Bundle args = new Bundle();
args.putInt(INVOCATION_TYPE_KEY, INVOCATION_TYPE_GESTURE);
mSysUiProxy.startAssistant(args);
mLaunchedAssistant = true;
}
@@ -34,7 +34,7 @@ public interface InputConsumer {
int getType();
default boolean isActive() {
default boolean useSharedSwipeState() {
return false;
}
@@ -413,7 +413,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
}
@Override
public boolean isActive() {
public boolean useSharedSwipeState() {
return mInteractionHandler != null;
}
}
@@ -422,7 +422,7 @@ public class TouchInteractionService extends Service implements
if (event.getAction() == ACTION_DOWN) {
if (isInValidSystemUiState()
&& mSwipeTouchRegion.contains(event.getX(), event.getY())) {
boolean useSharedState = mConsumer.isActive();
boolean useSharedState = mConsumer.useSharedSwipeState();
mConsumer.onConsumerAboutToBeSwitched();
mConsumer = newConsumer(useSharedState, event);
TOUCH_INTERACTION_LOG.addLog("setInputConsumer", mConsumer.getType());
@@ -460,8 +460,12 @@ public class TouchInteractionService extends Service implements
} else if (mAssistantAvailable
&& SysUINavigationMode.INSTANCE.get(this).getMode() == Mode.NO_BUTTON
&& AssistantTouchConsumer.withinTouchRegion(this, event)) {
return new AssistantTouchConsumer(this, mISystemUiProxy, !activityControl.isResumed()
? createOtherActivityInputConsumer(event, runningTaskInfo) : null, mInputMonitorCompat);
boolean addDelegate = !activityControl.isResumed();
return new AssistantTouchConsumer(this, mISystemUiProxy, addDelegate ?
createOtherActivityInputConsumer(event, runningTaskInfo) : null,
mInputMonitorCompat);
} else if (mSwipeSharedState.goingToLauncher || activityControl.isResumed()) {
return OverviewInputConsumer.newInstance(activityControl, false);
} else if (ENABLE_QUICKSTEP_LIVE_TILE.get() &&
+1 -1
View File
@@ -29,5 +29,5 @@
<!-- Assistant Gesture -->
<integer name="assistant_gesture_min_time_threshold">200</integer>
<integer name="assistant_gesture_corner_deg_threshold">10</integer>
<integer name="assistant_gesture_corner_deg_threshold">20</integer>
</resources>
+1 -1
View File
@@ -66,7 +66,7 @@
<!-- Assistant Gestures -->
<dimen name="gestures_assistant_size">48dp</dimen>
<dimen name="gestures_assistant_drag_threshold">70dp</dimen>
<dimen name="gestures_assistant_drag_threshold">55dp</dimen>
<!-- Distance to move elements when swiping up to go home from launcher -->
<dimen name="home_pullback_distance">28dp</dimen>