summaryrefslogtreecommitdiffstats
path: root/src_ui_overrides/com/android/launcher3/uioverrides/PinchToOverviewListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'src_ui_overrides/com/android/launcher3/uioverrides/PinchToOverviewListener.java')
-rw-r--r--src_ui_overrides/com/android/launcher3/uioverrides/PinchToOverviewListener.java164
1 files changed, 0 insertions, 164 deletions
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/PinchToOverviewListener.java b/src_ui_overrides/com/android/launcher3/uioverrides/PinchToOverviewListener.java
deleted file mode 100644
index a7c8cee29..000000000
--- a/src_ui_overrides/com/android/launcher3/uioverrides/PinchToOverviewListener.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3.uioverrides;
-
-import static com.android.launcher3.LauncherAnimUtils.OVERVIEW_TRANSITION_MS;
-import static com.android.launcher3.LauncherState.NORMAL;
-import static com.android.launcher3.LauncherState.OVERVIEW;
-import static com.android.launcher3.compat.AccessibilityManagerCompat.isAccessibilityEnabled;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.view.MotionEvent;
-import android.view.ScaleGestureDetector;
-import android.view.ScaleGestureDetector.OnScaleGestureListener;
-
-import com.android.launcher3.AbstractFloatingView;
-import com.android.launcher3.Launcher;
-import com.android.launcher3.LauncherState;
-import com.android.launcher3.Workspace;
-import com.android.launcher3.anim.AnimatorPlaybackController;
-import com.android.launcher3.util.TouchController;
-
-/**
- * Detects pinches and animates the Workspace to/from overview mode.
- */
-public class PinchToOverviewListener extends AnimatorListenerAdapter
- implements TouchController, OnScaleGestureListener {
-
- private static final float ACCEPT_THRESHOLD = 0.65f;
- /**
- * The velocity threshold at which a pinch will be completed instead of canceled,
- * even if the first threshold has not been passed. Measured in scale / millisecond
- */
- private static final float FLING_VELOCITY = 0.001f;
-
- private final ScaleGestureDetector mPinchDetector;
- private Launcher mLauncher;
- private Workspace mWorkspace = null;
- private boolean mPinchStarted = false;
-
- private AnimatorPlaybackController mCurrentAnimation;
- private float mCurrentScale;
- private boolean mShouldGoToFinalState;
-
- private LauncherState mToState;
-
- public PinchToOverviewListener(Launcher launcher) {
- mLauncher = launcher;
- mPinchDetector = new ScaleGestureDetector(mLauncher, this);
- }
-
- public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
- mPinchDetector.onTouchEvent(ev);
- return mPinchStarted;
- }
-
- public boolean onControllerTouchEvent(MotionEvent ev) {
- return mPinchDetector.onTouchEvent(ev);
- }
-
- @Override
- public boolean onScaleBegin(ScaleGestureDetector detector) {
- if (isAccessibilityEnabled(mLauncher)) {
- return false;
- }
- if (!mLauncher.isInState(NORMAL) && !mLauncher.isInState(OVERVIEW)) {
- // Don't listen for the pinch gesture if on all apps, widget picker, -1, etc.
- return false;
- }
- if (mCurrentAnimation != null) {
- // Don't listen for the pinch gesture if we are already animating from a previous one.
- return false;
- }
- if (mLauncher.isWorkspaceLocked()) {
- // Don't listen for the pinch gesture if the workspace isn't ready.
- return false;
- }
- if (mWorkspace == null) {
- mWorkspace = mLauncher.getWorkspace();
- }
- if (mWorkspace.isSwitchingState()) {
- // Don't listen for the pinch gesture while switching state, as it will cause a jump
- // once the state switching animation is complete.
- return false;
- }
- if (AbstractFloatingView.getTopOpenView(mLauncher) != null) {
- // Don't listen for the pinch gesture if a floating view is open.
- return false;
- }
-
- if (mLauncher.getDragController().isDragging()) {
- mLauncher.getDragController().cancelDrag();
- }
-
- mToState = mLauncher.isInState(OVERVIEW) ? NORMAL : OVERVIEW;
- mCurrentAnimation = mLauncher.getStateManager()
- .createAnimationToNewWorkspace(mToState, OVERVIEW_TRANSITION_MS);
- mCurrentAnimation.getTarget().addListener(this);
- mPinchStarted = true;
- mCurrentScale = 1;
- mShouldGoToFinalState = false;
-
- mCurrentAnimation.dispatchOnStart();
- return true;
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- mCurrentAnimation = null;
- mPinchStarted = false;
- }
-
- @Override
- public void onScaleEnd(ScaleGestureDetector detector) {
- if (mShouldGoToFinalState) {
- mCurrentAnimation.start();
- } else {
- mCurrentAnimation.setEndAction(new Runnable() {
- @Override
- public void run() {
- mLauncher.getStateManager().goToState(
- mToState == OVERVIEW ? NORMAL : OVERVIEW, false);
- }
- });
- mCurrentAnimation.reverse();
- }
- }
-
- @Override
- public boolean onScale(ScaleGestureDetector detector) {
- mCurrentScale = detector.getScaleFactor() * mCurrentScale;
-
- // If we are zooming out, inverse the mCurrentScale so that animationFraction = [0, 1]
- // 0 => Animation complete
- // 1=> Animation started
- float animationFraction = mToState == OVERVIEW ? mCurrentScale : (1 / mCurrentScale);
-
- float velocity = (1 - detector.getScaleFactor()) / detector.getTimeDelta();
- if (Math.abs(velocity) >= FLING_VELOCITY) {
- LauncherState toState = velocity > 0 ? OVERVIEW : NORMAL;
- mShouldGoToFinalState = toState == mToState;
- } else {
- mShouldGoToFinalState = animationFraction <= ACCEPT_THRESHOLD;
- }
-
- // Move the transition animation to that duration.
- mCurrentAnimation.setPlayFraction(1 - animationFraction);
- return true;
- }
-} \ No newline at end of file