diff options
8 files changed, 39 insertions, 30 deletions
diff --git a/protos/launcher_log.proto b/protos/launcher_log.proto index cab20a3be..06e6a923d 100644 --- a/protos/launcher_log.proto +++ b/protos/launcher_log.proto @@ -110,6 +110,8 @@ enum ControlType { QUICK_SCRUB_BUTTON = 12; CLEAR_ALL_BUTTON = 13; CANCEL_TARGET = 14; + TASK_PREVIEW = 15; + SPLIT_SCREEN_TARGET = 16; } enum TipType { diff --git a/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java index 43d982230..cd92314a7 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java @@ -76,4 +76,10 @@ public class FastOverviewState extends OverviewState { return Math.min(Math.min(dp.availableHeightPx / usedHeight, dp.availableWidthPx / usedWidth), MAX_PREVIEW_SCALE_UP); } + + @Override + public void onStateDisabled(Launcher launcher) { + super.onStateDisabled(launcher); + launcher.<RecentsView>getOverviewPanel().getQuickScrubController().cancelActiveQuickscrub(); + } } diff --git a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java index e3aabd6c8..ea27eb25b 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java @@ -76,15 +76,16 @@ public class RecentsViewStateController implements StateHandler { } PropertySetter setter = config.getPropertySetter(builder); float[] scaleTranslationYFactor = toState.getOverviewScaleAndTranslationYFactor(mLauncher); - Interpolator scaleInterpolator = builder.getInterpolator(ANIM_OVERVIEW_SCALE, LINEAR); - setter.setFloat(mRecentsView, SCALE_PROPERTY, scaleTranslationYFactor[0], scaleInterpolator); - Interpolator transYInterpolator = scaleInterpolator; + Interpolator scaleAndTransYInterpolator = builder.getInterpolator( + ANIM_OVERVIEW_SCALE, LINEAR); if (mLauncher.getStateManager().getState() == OVERVIEW && toState == FAST_OVERVIEW) { - transYInterpolator = Interpolators.clampToProgress(QUICK_SCRUB_START_INTERPOLATOR, 0, - QUICK_SCRUB_TRANSLATION_Y_FACTOR); + scaleAndTransYInterpolator = Interpolators.clampToProgress( + QUICK_SCRUB_START_INTERPOLATOR, 0, QUICK_SCRUB_TRANSLATION_Y_FACTOR); } + setter.setFloat(mRecentsView, SCALE_PROPERTY, scaleTranslationYFactor[0], + scaleAndTransYInterpolator); setter.setFloat(mRecentsView, TRANSLATION_Y_FACTOR, scaleTranslationYFactor[1], - transYInterpolator); + scaleAndTransYInterpolator); setter.setFloat(mRecentsViewContainer, CONTENT_ALPHA, toState.overviewUi ? 1 : 0, builder.getInterpolator(ANIM_OVERVIEW_FADE, AGGRESSIVE_EASE_IN_OUT)); diff --git a/quickstep/src/com/android/quickstep/QuickScrubController.java b/quickstep/src/com/android/quickstep/QuickScrubController.java index 8e1a3d5d8..95a82dd86 100644 --- a/quickstep/src/com/android/quickstep/QuickScrubController.java +++ b/quickstep/src/com/android/quickstep/QuickScrubController.java @@ -132,6 +132,17 @@ public class QuickScrubController implements OnAlarmListener { } } + public void cancelActiveQuickscrub() { + if (!mInQuickScrub) { + return; + } + Log.d(TAG, "Quickscrub was active, cancelling"); + mInQuickScrub = false; + mActivityControlHelper = null; + mOnFinishedTransitionToQuickScrubRunnable = null; + mRecentsView.setNextPageSwitchRunnable(null); + } + /** * Initializes the UI for quick scrub, returns true if success. */ diff --git a/quickstep/src/com/android/quickstep/TaskSystemShortcut.java b/quickstep/src/com/android/quickstep/TaskSystemShortcut.java index 228af8e90..f82ff8c53 100644 --- a/quickstep/src/com/android/quickstep/TaskSystemShortcut.java +++ b/quickstep/src/com/android/quickstep/TaskSystemShortcut.java @@ -16,6 +16,8 @@ package com.android.quickstep; +import static com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch.TAP; + import android.content.ComponentName; import android.content.Intent; import android.graphics.Bitmap; @@ -35,6 +37,7 @@ import com.android.launcher3.ItemInfo; import com.android.launcher3.R; import com.android.launcher3.ShortcutInfo; import com.android.launcher3.popup.SystemShortcut; +import com.android.launcher3.userevent.nano.LauncherLogProto; import com.android.launcher3.util.InstantAppResolver; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskThumbnailView; @@ -166,7 +169,8 @@ public class TaskSystemShortcut<T extends SystemShortcut> extends SystemShortcut Log.w(TAG, "Failed to notify SysUI of split screen: ", e); return; } - + activity.getUserEventDispatcher().logActionOnControl(TAP, + LauncherLogProto.ControlType.SPLIT_SCREEN_TARGET); // Add a device profile change listener to kick off animating the side tasks // once we enter multiwindow mode and relayout activity.addOnDeviceProfileChangeListener(onDeviceProfileChangeListener); diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java index 191c237f6..d171f6945 100644 --- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java +++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java @@ -700,6 +700,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> { mRecentsView.setRunningTaskHidden(false); mRecentsView.setRunningTaskIconScaledDown(false /* isScaledDown */, false /* animate */); + mQuickScrubController.cancelActiveQuickscrub(); } private void notifyTransitionCancelled() { diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 68ad6e346..72ba418b2 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -466,9 +466,12 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo */ public void addSpringFromFlingUpdateListener(ValueAnimator animator, float velocity) { animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + boolean shouldSpring = true; + @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { - if (valueAnimator.getAnimatedFraction() >= FLING_ANIMATION_THRESHOLD) { + if (shouldSpring + && valueAnimator.getAnimatedFraction() >= FLING_ANIMATION_THRESHOLD) { int searchViewId = getSearchView().getId(); addSpringView(searchViewId); @@ -481,7 +484,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo } }); - animator.removeUpdateListener(this); + shouldSpring = false; } } }); diff --git a/src/com/android/launcher3/keyboard/ViewGroupFocusHelper.java b/src/com/android/launcher3/keyboard/ViewGroupFocusHelper.java index bd5c06e5b..fde220cbf 100644 --- a/src/com/android/launcher3/keyboard/ViewGroupFocusHelper.java +++ b/src/com/android/launcher3/keyboard/ViewGroupFocusHelper.java @@ -18,7 +18,6 @@ package com.android.launcher3.keyboard; import android.graphics.Rect; import android.view.View; -import android.view.View.OnFocusChangeListener; import com.android.launcher3.PagedView; @@ -52,8 +51,8 @@ public class ViewGroupFocusHelper extends FocusIndicatorHelper { private void computeLocationRelativeToContainer(View child, Rect outRect) { View parent = (View) child.getParent(); - outRect.left += child.getLeft(); - outRect.top += child.getTop(); + outRect.left += child.getX(); + outRect.top += child.getY(); if (parent != mContainer) { if (parent instanceof PagedView) { @@ -64,22 +63,4 @@ public class ViewGroupFocusHelper extends FocusIndicatorHelper { computeLocationRelativeToContainer(parent, outRect); } } - - /** - * Sets the alpha of this FocusIndicatorHelper to 0 when a view with this listener - * receives focus. - */ - public View.OnFocusChangeListener getHideIndicatorOnFocusListener() { - return new OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - endCurrentAnimation(); - setCurrentView(null); - setAlpha(0); - invalidateDirty(); - } - } - }; - } } |