Merge "Add margin to SUW back button" into tm-qpr-dev
diff --git a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
index cbb9ad1..910b99b 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
@@ -130,10 +130,11 @@
mRecentsView.createSplitSelectInitAnimation(builder,
toState.getTransitionDuration(mLauncher, true /* isToState */));
- // Add properties to shift remaining taskViews to get out of placeholder view
+ // Shift tasks vertically downward to get out of placeholder view
builder.setFloat(mRecentsView, taskViewsFloat.first,
toState.getSplitSelectTranslation(mLauncher),
timings.getGridSlidePrimaryInterpolator());
+ // Zero out horizontal translation
builder.setFloat(mRecentsView, taskViewsFloat.second,
0,
timings.getGridSlideSecondaryInterpolator());
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
index bcd722f..da07edf 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
@@ -197,7 +197,8 @@
config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, clampToProgress(LINEAR,
timings.getActionsFadeStartOffset(),
timings.getActionsFadeEndOffset()));
- } else if (fromState == NORMAL && toState == OVERVIEW_SPLIT_SELECT) {
+ } else if ((fromState == NORMAL || fromState == ALL_APPS)
+ && toState == OVERVIEW_SPLIT_SELECT) {
// Splitting from Home is currently only available on tablets
SplitAnimationTimings timings = SplitAnimationTimings.TABLET_HOME_TO_SPLIT;
config.setInterpolator(ANIM_SCRIM_FADE, clampToProgress(LINEAR,
diff --git a/quickstep/src/com/android/quickstep/util/OverviewToSplitTimings.java b/quickstep/src/com/android/quickstep/util/OverviewToSplitTimings.java
index d46c0f8..e189a66 100644
--- a/quickstep/src/com/android/quickstep/util/OverviewToSplitTimings.java
+++ b/quickstep/src/com/android/quickstep/util/OverviewToSplitTimings.java
@@ -16,6 +16,9 @@
package com.android.quickstep.util;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
+import static com.android.launcher3.anim.Interpolators.INSTANT;
+
import android.view.animation.Interpolator;
/**
@@ -44,14 +47,14 @@
public int getInstructionsTextFadeInEnd() { return 300; }
public int getInstructionsUnfoldStart() { return 167; }
public int getInstructionsUnfoldEnd() { return 500; }
+ public Interpolator getGridSlidePrimaryInterpolator() { return EMPHASIZED; }
+ public Interpolator getGridSlideSecondaryInterpolator() { return INSTANT; }
abstract public int getDuration();
abstract public Interpolator getStagedRectXInterpolator();
abstract public Interpolator getStagedRectYInterpolator();
abstract public Interpolator getStagedRectScaleXInterpolator();
abstract public Interpolator getStagedRectScaleYInterpolator();
- abstract public Interpolator getGridSlidePrimaryInterpolator();
- abstract public Interpolator getGridSlideSecondaryInterpolator();
public float getGridSlideStartOffset() {
return (float) getGridSlideStart() / getDuration();
diff --git a/quickstep/src/com/android/quickstep/util/PhoneOverviewToSplitTimings.java b/quickstep/src/com/android/quickstep/util/PhoneOverviewToSplitTimings.java
index 66c41d6..f1dde53 100644
--- a/quickstep/src/com/android/quickstep/util/PhoneOverviewToSplitTimings.java
+++ b/quickstep/src/com/android/quickstep/util/PhoneOverviewToSplitTimings.java
@@ -17,7 +17,6 @@
package com.android.quickstep.util;
import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
-import static com.android.launcher3.anim.Interpolators.INSTANT;
import android.view.animation.Interpolator;
@@ -41,6 +40,4 @@
public Interpolator getStagedRectYInterpolator() { return EMPHASIZED; }
public Interpolator getStagedRectScaleXInterpolator() { return EMPHASIZED; }
public Interpolator getStagedRectScaleYInterpolator() { return EMPHASIZED; }
- public Interpolator getGridSlidePrimaryInterpolator() { return EMPHASIZED; }
- public Interpolator getGridSlideSecondaryInterpolator() { return INSTANT; }
}
diff --git a/quickstep/src/com/android/quickstep/util/TabletOverviewToSplitTimings.java b/quickstep/src/com/android/quickstep/util/TabletOverviewToSplitTimings.java
index 30defa7..cbf46bf 100644
--- a/quickstep/src/com/android/quickstep/util/TabletOverviewToSplitTimings.java
+++ b/quickstep/src/com/android/quickstep/util/TabletOverviewToSplitTimings.java
@@ -17,7 +17,6 @@
package com.android.quickstep.util;
import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
-import static com.android.launcher3.anim.Interpolators.LINEAR;
import android.view.animation.Interpolator;
@@ -41,6 +40,4 @@
public Interpolator getStagedRectYInterpolator() { return DEACCEL_2; }
public Interpolator getStagedRectScaleXInterpolator() { return DEACCEL_2; }
public Interpolator getStagedRectScaleYInterpolator() { return DEACCEL_2; }
- public Interpolator getGridSlidePrimaryInterpolator() { return LINEAR; }
- public Interpolator getGridSlideSecondaryInterpolator() { return LINEAR; }
}
diff --git a/quickstep/src/com/android/quickstep/util/ViewCapture.java b/quickstep/src/com/android/quickstep/util/ViewCapture.java
index cfcfce0..6171c5d 100644
--- a/quickstep/src/com/android/quickstep/util/ViewCapture.java
+++ b/quickstep/src/com/android/quickstep/util/ViewCapture.java
@@ -421,7 +421,6 @@
out.visibility = this.visibility;
out.willNotDraw = this.willNotDraw;
out.clipChildren = this.clipChildren;
- out.next = this.next;
out.elevation = this.elevation;
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 2f91e16..31e165d 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -3115,6 +3115,7 @@
+ splitTimings.getGridSlideDurationOffset(), 0f, 1f)
: 1f;
+ // Slide tiles in horizontally to fill dismissed area
anim.setFloat(child, translationProperty, scrollDiff,
clampToProgress(
splitTimings.getGridSlidePrimaryInterpolator(),
@@ -4156,6 +4157,9 @@
}
}
+ /**
+ * Called when staging a split from Home/AllApps, using the icon long-press menu.
+ */
public void initiateSplitSelect(QuickstepSystemShortcut.SplitSelectSource splitSelectSource) {
mSplitSelectSource = splitSelectSource;
mSplitSelectStateController.setInitialTaskSelect(splitSelectSource.intent,
@@ -4286,8 +4290,18 @@
snapToPageImmediately(pageToSnapTo);
}
onLayout(false /* changed */, getLeft(), getTop(), getRight(), getBottom());
+
+ // We are leaving split selection state, so it is safe to reset thumbnail translations for
+ // the next time split is invoked.
+ setTaskViewsPrimarySplitTranslation(0);
+ setTaskViewsSecondarySplitTranslation(0);
+
resetTaskVisuals();
mSplitHiddenTaskViewIndex = -1;
+ if (mSplitHiddenTaskView != null) {
+ mSplitHiddenTaskView.setThumbnailVisibility(VISIBLE);
+ mSplitHiddenTaskView = null;
+ }
}
private void safeRemoveDragLayerView(@Nullable View viewToRemove) {
diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
index 28e0b68..b4cb0ee 100644
--- a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
+++ b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
@@ -153,6 +153,7 @@
@Override
public void setScroll(int currentScroll, int totalScroll) {
if (mNumPages <= 1) {
+ mCurrentScroll = 0;
return;
}
@@ -296,8 +297,12 @@
for (int i = 0; i < mEntryAnimationRadiusFactors.length; i++) {
mPaginationPaint.setAlpha(i == mActivePage ? PAGE_INDICATOR_ALPHA : DOT_ALPHA);
if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
- canvas.drawCircle(x, y, getRadius(x) * mEntryAnimationRadiusFactors[i],
- mPaginationPaint);
+ if (i != mActivePage) {
+ canvas.drawCircle(x, y, mDotRadius * mEntryAnimationRadiusFactors[i],
+ mPaginationPaint);
+ } else {
+ drawPageIndicator(canvas, mEntryAnimationRadiusFactors[i]);
+ }
} else {
canvas.drawCircle(x, y, mDotRadius * mEntryAnimationRadiusFactors[i],
mPaginationPaint);
@@ -319,20 +324,7 @@
// Here we draw the current page indicator
mPaginationPaint.setAlpha(PAGE_INDICATOR_ALPHA);
if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
- RectF currRect = getActiveRect();
-
- // Moves the canvas to start at the top left corner of the page indicator
- canvas.translate(currRect.left, currRect.top);
-
- int scrollPerPage = getScrollPerPage();
- // This IF is to avoid division by 0
- if (scrollPerPage != 0) {
- int delta = mCurrentScroll % scrollPerPage;
- canvas.rotate((INDICATOR_ROTATION * delta) / scrollPerPage,
- mPageIndicatorRadius, mPageIndicatorRadius);
- }
-
- mPageIndicatorDrawable.draw(canvas);
+ drawPageIndicator(canvas, 1);
} else {
canvas.drawRoundRect(getActiveRect(), mDotRadius, mDotRadius, mPaginationPaint);
}
@@ -340,6 +332,36 @@
}
/**
+ * Draws the page indicator, denoting the currently selected page
+ *
+ * @param canvas is used to draw the page indicator and to rotate it as we scroll
+ * @param scale is used to set the scale of our canvas
+ */
+ private void drawPageIndicator(Canvas canvas, float scale) {
+ RectF currRect = getActiveRect();
+
+ // saves the canvas so we can later restore it to its original scale
+ canvas.save();
+
+ // Moves the canvas to start at the top left corner of the page indicator
+ canvas.translate(currRect.left, currRect.top);
+
+ // Scales the canvas in place to animate the indicator on entry
+ canvas.scale(scale, scale, mPageIndicatorRadius, mPageIndicatorRadius);
+
+ int scrollPerPage = getScrollPerPage();
+ // This IF is to avoid division by 0
+ if (scrollPerPage != 0) {
+ int delta = mCurrentScroll % scrollPerPage;
+ canvas.rotate((INDICATOR_ROTATION * delta) / scrollPerPage,
+ mPageIndicatorRadius, mPageIndicatorRadius);
+ }
+
+ mPageIndicatorDrawable.draw(canvas);
+ canvas.restore();
+ }
+
+ /**
* Returns the radius of the circle based on how close the page indicator is to it
*
* @param dotPositionX is the position the dot is located at in the x-axis