d5a3df7b83
Moved EDGE_NAV_BAR from quickstep package to launcher3 Bug: 127917144 Change-Id: Ic619ea49896ca8e49a9a539b7dc7d682291241b7
80 lines
2.9 KiB
Java
80 lines
2.9 KiB
Java
package com.android.launcher3.uioverrides;
|
|
|
|
import static com.android.launcher3.LauncherState.NORMAL;
|
|
import static com.android.launcher3.LauncherState.OVERVIEW;
|
|
import static com.android.launcher3.Utilities.EDGE_NAV_BAR;
|
|
|
|
import android.view.MotionEvent;
|
|
|
|
import com.android.launcher3.AbstractFloatingView;
|
|
import com.android.launcher3.Launcher;
|
|
import com.android.launcher3.LauncherState;
|
|
import com.android.launcher3.LauncherStateManager.AnimationComponents;
|
|
import com.android.launcher3.touch.AbstractStateChangeTouchController;
|
|
import com.android.launcher3.touch.SwipeDetector;
|
|
import com.android.launcher3.userevent.nano.LauncherLogProto;
|
|
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction;
|
|
import com.android.quickstep.RecentsModel;
|
|
|
|
/**
|
|
* Touch controller for handling edge swipes in landscape/seascape UI
|
|
*/
|
|
public class LandscapeEdgeSwipeController extends AbstractStateChangeTouchController {
|
|
|
|
private static final String TAG = "LandscapeEdgeSwipeCtrl";
|
|
|
|
public LandscapeEdgeSwipeController(Launcher l) {
|
|
super(l, SwipeDetector.HORIZONTAL);
|
|
}
|
|
|
|
@Override
|
|
protected boolean canInterceptTouch(MotionEvent ev) {
|
|
if (mCurrentAnimation != null) {
|
|
// If we are already animating from a previous state, we can intercept.
|
|
return true;
|
|
}
|
|
if (AbstractFloatingView.getTopOpenView(mLauncher) != null) {
|
|
return false;
|
|
}
|
|
return mLauncher.isInState(NORMAL) && (ev.getEdgeFlags() & EDGE_NAV_BAR) != 0;
|
|
}
|
|
|
|
@Override
|
|
protected LauncherState getTargetState(LauncherState fromState, boolean isDragTowardPositive) {
|
|
boolean draggingFromNav = mLauncher.getDeviceProfile().isSeascape() != isDragTowardPositive;
|
|
return draggingFromNav ? OVERVIEW : NORMAL;
|
|
}
|
|
|
|
@Override
|
|
protected int getLogContainerTypeForNormalState() {
|
|
return LauncherLogProto.ContainerType.NAVBAR;
|
|
}
|
|
|
|
@Override
|
|
protected float getShiftRange() {
|
|
return mLauncher.getDragLayer().getWidth();
|
|
}
|
|
|
|
@Override
|
|
protected float initCurrentAnimation(@AnimationComponents int animComponent) {
|
|
float range = getShiftRange();
|
|
long maxAccuracy = (long) (2 * range);
|
|
mCurrentAnimation = mLauncher.getStateManager().createAnimationToNewWorkspace(mToState,
|
|
maxAccuracy, animComponent);
|
|
return (mLauncher.getDeviceProfile().isSeascape() ? 2 : -2) / range;
|
|
}
|
|
|
|
@Override
|
|
protected int getDirectionForLog() {
|
|
return mLauncher.getDeviceProfile().isSeascape() ? Direction.RIGHT : Direction.LEFT;
|
|
}
|
|
|
|
@Override
|
|
protected void onSwipeInteractionCompleted(LauncherState targetState, int logAction) {
|
|
super.onSwipeInteractionCompleted(targetState, logAction);
|
|
if (mStartState == NORMAL && targetState == OVERVIEW) {
|
|
RecentsModel.INSTANCE.get(mLauncher).onOverviewShown(true, TAG);
|
|
}
|
|
}
|
|
}
|