Make all tasks in intermediate carousel have the same size
- Replace fullscreen translation/scale with nonGrid, which applies whenever tasks are not in grid, so that intermediate carousle's tasks have the same size as focused task
- Avoid showing task icon in intermediate carousel as its scaled up. During swipe up, all task icons only appear after gesture is finished consistenly, regardles if it's running task.
- When swipe up from home, make tasks join the grid immediately
- Make pageOffset calculation consider task scale
- Tuned resistance and scale when RecentsView is swiped up
Bug: 187417137
Test: manaul
Change-Id: Ide55a32241a3551a58e12c399c22420562848c70
diff --git a/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java b/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
index 1d52315..7a968c1 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
@@ -17,6 +17,7 @@
package com.android.launcher3.uioverrides;
import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE_IN_OUT;
+import static com.android.launcher3.anim.Interpolators.INSTANT;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_FADE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_MODAL;
@@ -113,7 +114,8 @@
toState.getOverviewModalness(),
config.getInterpolator(ANIM_OVERVIEW_MODAL, LINEAR));
setter.setFloat(mRecentsView, RECENTS_GRID_PROGRESS,
- toState.displayOverviewTasksAsGrid(mLauncher.getDeviceProfile()) ? 1f : 0f, LINEAR);
+ toState.displayOverviewTasksAsGrid(mLauncher.getDeviceProfile()) ? 1f : 0f,
+ INSTANT);
}
abstract FloatProperty getTaskModalnessProperty();
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
index 52083bb..854067b 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
@@ -15,6 +15,7 @@
*/
package com.android.quickstep.fallback;
+import static com.android.launcher3.anim.Interpolators.INSTANT;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_MODAL;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SCALE;
@@ -93,7 +94,7 @@
config.getInterpolator(ANIM_OVERVIEW_MODAL, LINEAR));
setter.setFloat(mRecentsView, FULLSCREEN_PROGRESS, state.isFullScreen() ? 1 : 0, LINEAR);
setter.setFloat(mRecentsView, RECENTS_GRID_PROGRESS,
- state.displayOverviewTasksAsGrid(mActivity.getDeviceProfile()) ? 1f : 0f, LINEAR);
+ state.displayOverviewTasksAsGrid(mActivity.getDeviceProfile()) ? 1f : 0f, INSTANT);
setter.setViewBackgroundColor(mActivity.getScrimView(), state.getScrimColor(mActivity),
config.getInterpolator(ANIM_SCRIM_FADE, LINEAR));
diff --git a/quickstep/src/com/android/quickstep/util/AnimatorControllerWithResistance.java b/quickstep/src/com/android/quickstep/util/AnimatorControllerWithResistance.java
index 7f94839..f1b4e3d 100644
--- a/quickstep/src/com/android/quickstep/util/AnimatorControllerWithResistance.java
+++ b/quickstep/src/com/android/quickstep/util/AnimatorControllerWithResistance.java
@@ -49,6 +49,7 @@
private enum RecentsResistanceParams {
FROM_APP(0.75f, 0.5f, 1f),
+ FROM_APP_TABLET(0.9f, 0.75f, 1f),
FROM_OVERVIEW(1f, 0.75f, 0.5f);
RecentsResistanceParams(float scaleStartResist, float scaleMaxResist,
@@ -228,7 +229,7 @@
// These are not required, or can have a default value that is generally correct.
@Nullable public PendingAnimation resistAnim = null;
- public RecentsResistanceParams resistanceParams = RecentsResistanceParams.FROM_APP;
+ public RecentsResistanceParams resistanceParams;
public float startScale = 1f;
public float startTranslation = 0f;
@@ -242,6 +243,11 @@
this.scaleProperty = scaleProperty;
this.translationTarget = translationTarget;
this.translationProperty = translationProperty;
+ if (dp.isTablet) {
+ resistanceParams = RecentsResistanceParams.FROM_APP_TABLET;
+ } else {
+ resistanceParams = RecentsResistanceParams.FROM_APP;
+ }
}
private RecentsParams setResistAnim(PendingAnimation resistAnim) {
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index e9e6ab6..923533a 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -373,6 +373,7 @@
protected final Rect mTempRect = new Rect();
protected final RectF mTempRectF = new RectF();
private final PointF mTempPointF = new PointF();
+ private final Matrix mTempMatrix = new Matrix();
private final float[] mTempFloat = new float[1];
private final List<OnScrollChangedListener> mScrollListeners = new ArrayList<>();
@@ -502,7 +503,7 @@
private Task mTmpRunningTask;
protected int mFocusedTaskId = -1;
- private boolean mRunningTaskIconScaledDown = false;
+ private boolean mTaskIconScaledDown = false;
private boolean mOverviewStateEnabled;
private boolean mHandleTaskStackChanges;
@@ -1191,6 +1192,7 @@
TaskView taskView = getTaskViewAt(i);
if (mIgnoreResetTaskId != taskView.getTaskId()) {
taskView.resetViewTransforms();
+ taskView.setIconScaleAndDim(mTaskIconScaledDown ? 0 : 1);
taskView.setStableAlpha(mContentAlpha);
taskView.setFullscreenProgress(mFullscreenProgress);
taskView.setModalness(mTaskModalness);
@@ -1209,11 +1211,6 @@
setRunningTaskHidden(mRunningTaskTileHidden);
}
- // Force apply the scale.
- if (mIgnoreResetTaskId != mRunningTaskId) {
- applyRunningTaskIconScale();
- }
-
updateCurveProperties();
// Update the set of visible task's data
loadVisibleTaskData(TaskView.FLAG_UPDATE_ALL);
@@ -1361,12 +1358,11 @@
for (int i = 0; i < taskCount; i++) {
TaskView taskView = getTaskViewAt(i);
taskView.updateTaskSize();
- taskView.getPrimaryFullscreenTranslationProperty().set(taskView,
- accumulatedTranslationX);
- taskView.getSecondaryFullscreenTranslationProperty().set(taskView, 0f);
+ taskView.getPrimaryNonGridTranslationProperty().set(taskView, accumulatedTranslationX);
+ taskView.getSecondaryNonGridTranslationProperty().set(taskView, 0f);
// Compensate space caused by TaskView scaling.
float widthDiff =
- taskView.getLayoutParams().width * (1 - taskView.getFullscreenScale());
+ taskView.getLayoutParams().width * (1 - taskView.getNonGridScale());
accumulatedTranslationX += mIsRtl ? widthDiff : -widthDiff;
}
@@ -1665,7 +1661,7 @@
setEnableFreeScroll(false);
setEnableDrawingLiveTile(false);
setRunningTaskHidden(true);
- setRunningTaskIconScaledDown(true);
+ setTaskIconScaledDown(true);
}
/**
@@ -1674,9 +1670,7 @@
*/
public void onSwipeUpAnimationSuccess() {
Log.d("b/186444448", "onSwipeUpAnimationSuccess");
- if (getRunningTaskView() != null) {
- animateUpRunningTaskIconScale();
- }
+ animateUpTaskIconScale();
setSwipeDownShouldLaunchApp(true);
}
@@ -1760,7 +1754,7 @@
setRunningTaskViewShowScreenshot(true);
}
setRunningTaskHidden(false);
- animateUpRunningTaskIconScale();
+ animateUpTaskIconScale();
animateActionsViewIn();
mCurrentGestureEndTarget = null;
@@ -1824,7 +1818,7 @@
if (mRunningTaskId != -1) {
// Reset the state on the old running task view
- setRunningTaskIconScaledDown(false);
+ setTaskIconScaledDown(false);
setRunningTaskViewShowScreenshot(true);
setRunningTaskHidden(false);
}
@@ -1855,21 +1849,13 @@
}
}
- public void setRunningTaskIconScaledDown(boolean isScaledDown) {
- if (mRunningTaskIconScaledDown != isScaledDown) {
- mRunningTaskIconScaledDown = isScaledDown;
- applyRunningTaskIconScale();
- }
- }
-
- public boolean isTaskIconScaledDown(TaskView taskView) {
- return mRunningTaskIconScaledDown && getRunningTaskView() == taskView;
- }
-
- private void applyRunningTaskIconScale() {
- TaskView firstTask = getRunningTaskView();
- if (firstTask != null) {
- firstTask.setIconScaleAndDim(mRunningTaskIconScaledDown ? 0 : 1);
+ public void setTaskIconScaledDown(boolean isScaledDown) {
+ if (mTaskIconScaledDown != isScaledDown) {
+ mTaskIconScaledDown = isScaledDown;
+ int taskCount = getTaskViewCount();
+ for (int i = 0; i < taskCount; i++) {
+ getTaskViewAt(i).setIconScaleAndDim(mTaskIconScaledDown ? 0 : 1);
+ }
}
}
@@ -1880,14 +1866,14 @@
anim.start();
}
- public void animateUpRunningTaskIconScale() {
- mRunningTaskIconScaledDown = false;
- TaskView firstTask = getRunningTaskView();
- Log.d("b/186444448", "animateUpRunningTaskIconScale: firstTask="
- + (firstTask != null ? "t:" + firstTask.getTask() : null));
- if (firstTask != null) {
- firstTask.setIconScaleAnimStartProgress(0f);
- firstTask.animateIconScaleAndDimIntoView();
+ public void animateUpTaskIconScale() {
+ mTaskIconScaledDown = false;
+ Log.d("b/186444448", "animateUpRunningTaskIconScale");
+ int taskCount = getTaskViewCount();
+ for (int i = 0; i < taskCount; i++) {
+ TaskView taskView = getTaskViewAt(i);
+ taskView.setIconScaleAnimStartProgress(0f);
+ taskView.animateIconScaleAndDimIntoView();
}
}
@@ -2029,20 +2015,18 @@
// We need to maintain snapped task's page scroll invariant between quick switch and
// overview, so we sure snapped task's grid translation is 0, and add a non-fullscreen
// translationX that is the same as snapped task's full scroll adjustment.
- float snappedTaskFullscreenScrollAdjustment = 0;
+ float snappedTaskNonGridScrollAdjustment = 0;
float snappedTaskGridTranslationX = 0;
if (snappedTaskView != null) {
- snappedTaskFullscreenScrollAdjustment = snappedTaskView.getScrollAdjustment(
+ snappedTaskNonGridScrollAdjustment = snappedTaskView.getScrollAdjustment(
/*fullscreenEnabled=*/true, /*gridEnabled=*/false);
snappedTaskGridTranslationX = gridTranslations[snappedPage - mTaskViewStartIndex];
}
for (int i = 0; i < taskCount; i++) {
TaskView taskView = getTaskViewAt(i);
- taskView.setGridTranslationX(gridTranslations[i] - snappedTaskGridTranslationX);
- taskView.getPrimaryNonFullscreenTranslationProperty().set(taskView,
- snappedTaskFullscreenScrollAdjustment);
- taskView.getSecondaryNonFullscreenTranslationProperty().set(taskView, 0f);
+ taskView.setGridTranslationX(gridTranslations[i] - snappedTaskGridTranslationX
+ + snappedTaskNonGridScrollAdjustment);
}
// Use the accumulated translation of the row containing the last task.
@@ -2077,7 +2061,7 @@
float clearAllTotalTranslationX =
clearAllAccumulatedTranslation + clearAllShorterRowCompensation
- + clearAllShortTotalCompensation + snappedTaskFullscreenScrollAdjustment;
+ + clearAllShortTotalCompensation + snappedTaskNonGridScrollAdjustment;
if (focusedTaskIndex < taskCount) {
// Shift by focused task's width and spacing if a task is focused.
clearAllTotalTranslationX +=
@@ -2892,6 +2876,12 @@
outRect.offset(taskView.getPersistentTranslationX(),
taskView.getPersistentTranslationY());
outRect.top += mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx;
+
+ mTempMatrix.reset();
+ float persistentScale = taskView.getPersistentScale();
+ mTempMatrix.postScale(persistentScale, persistentScale,
+ mIsRtl ? outRect.right : outRect.left, outRect.top);
+ mTempMatrix.mapRect(outRect);
}
outRect.offset(mOrientationHandler.getPrimaryValue(-midPointScroll, 0),
mOrientationHandler.getSecondaryValue(-midPointScroll, 0));
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index ea37d70..1a2a556 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -158,7 +158,7 @@
public static final long SCALE_ICON_DURATION = 120;
private static final long DIM_ANIM_DURATION = 700;
- private static final Interpolator FULLSCREEN_INTERPOLATOR = ACCEL_DEACCEL;
+ private static final Interpolator GRID_INTERPOLATOR = ACCEL_DEACCEL;
/**
* This technically can be a vanilla {@link TouchDelegate} class, however that class requires
@@ -289,55 +289,29 @@
}
};
- private static final FloatProperty<TaskView> FULLSCREEN_TRANSLATION_X =
- new FloatProperty<TaskView>("fullscreenTranslationX") {
+ private static final FloatProperty<TaskView> NON_GRID_TRANSLATION_X =
+ new FloatProperty<TaskView>("nonGridTranslationX") {
@Override
public void setValue(TaskView taskView, float v) {
- taskView.setFullscreenTranslationX(v);
+ taskView.setNonGridTranslationX(v);
}
@Override
public Float get(TaskView taskView) {
- return taskView.mFullscreenTranslationX;
+ return taskView.mNonGridTranslationX;
}
};
- private static final FloatProperty<TaskView> FULLSCREEN_TRANSLATION_Y =
- new FloatProperty<TaskView>("fullscreenTranslationY") {
+ private static final FloatProperty<TaskView> NON_GRID_TRANSLATION_Y =
+ new FloatProperty<TaskView>("nonGridTranslationY") {
@Override
public void setValue(TaskView taskView, float v) {
- taskView.setFullscreenTranslationY(v);
+ taskView.setNonGridTranslationY(v);
}
@Override
public Float get(TaskView taskView) {
- return taskView.mFullscreenTranslationY;
- }
- };
-
- private static final FloatProperty<TaskView> NON_FULLSCREEN_TRANSLATION_X =
- new FloatProperty<TaskView>("nonFullscreenTranslationX") {
- @Override
- public void setValue(TaskView taskView, float v) {
- taskView.setNonFullscreenTranslationX(v);
- }
-
- @Override
- public Float get(TaskView taskView) {
- return taskView.mNonFullscreenTranslationX;
- }
- };
-
- private static final FloatProperty<TaskView> NON_FULLSCREEN_TRANSLATION_Y =
- new FloatProperty<TaskView>("nonFullscreenTranslationY") {
- @Override
- public void setValue(TaskView taskView, float v) {
- taskView.setNonFullscreenTranslationY(v);
- }
-
- @Override
- public Float get(TaskView taskView) {
- return taskView.mNonFullscreenTranslationY;
+ return taskView.mNonGridTranslationY;
}
};
@@ -362,7 +336,7 @@
private final DigitalWellBeingToast mDigitalWellBeingToast;
private float mFullscreenProgress;
private float mGridProgress;
- private float mFullscreenScale = 1;
+ private float mNonGridScale = 1;
private final FullscreenDrawParams mCurrentFullscreenParams;
private final StatefulActivity mActivity;
@@ -374,16 +348,14 @@
private float mTaskResistanceTranslationX;
private float mTaskResistanceTranslationY;
// The following translation variables should only be used in the same orientation as Launcher.
- private float mFullscreenTranslationX;
- private float mFullscreenTranslationY;
- // Applied as a complement to fullscreenTranslation, for adjusting the carousel overview, or the
- // in transition carousel before forming the grid on tablets.
- private float mNonFullscreenTranslationX;
- private float mNonFullscreenTranslationY;
private float mBoxTranslationY;
// The following grid translations scales with mGridProgress.
private float mGridTranslationX;
private float mGridTranslationY;
+ // Applied as a complement to gridTranslation, for adjusting the carousel overview and quick
+ // switch.
+ private float mNonGridTranslationX;
+ private float mNonGridTranslationY;
// Used when in SplitScreenSelectState
private float mSplitSelectTranslationY;
private float mSplitSelectTranslationX;
@@ -881,9 +853,8 @@
@Override
public void onRecycle() {
- mFullscreenTranslationX = mFullscreenTranslationY = mNonFullscreenTranslationX =
- mNonFullscreenTranslationY = mGridTranslationX = mGridTranslationY =
- mBoxTranslationY = 0f;
+ mNonGridTranslationX = mNonGridTranslationY =
+ mGridTranslationX = mGridTranslationY = mBoxTranslationY = 0f;
resetViewTransforms();
// Clear any references to the thumbnail (it will be re-read either from the cache or the
// system on next bind)
@@ -969,13 +940,13 @@
}
}
- private void setFullscreenScale(float fullscreenScale) {
- mFullscreenScale = fullscreenScale;
+ private void setNonGridScale(float nonGridScale) {
+ mNonGridScale = nonGridScale;
applyScale();
}
- public float getFullscreenScale() {
- return mFullscreenScale;
+ public float getNonGridScale() {
+ return mNonGridScale;
}
private void setSnapshotScale(float dismissScale) {
@@ -997,12 +968,22 @@
private void applyScale() {
float scale = 1;
- float fullScreenProgress = FULLSCREEN_INTERPOLATOR.getInterpolation(mFullscreenProgress);
- scale *= Utilities.mapRange(fullScreenProgress, 1f, mFullscreenScale);
+ scale *= getPersistentScale();
setScaleX(scale);
setScaleY(scale);
}
+ /**
+ * Returns multiplication of scale that is persistent (e.g. fullscreen and grid), and does not
+ * change according to a temporary state.
+ */
+ public float getPersistentScale() {
+ float scale = 1;
+ float gridProgress = GRID_INTERPOLATOR.getInterpolation(mGridProgress);
+ scale *= Utilities.mapRange(gridProgress, mNonGridScale, 1f);
+ return scale;
+ }
+
private void setSplitSelectTranslationX(float x) {
mSplitSelectTranslationX = x;
applyTranslationX();
@@ -1042,23 +1023,13 @@
applyTranslationY();
}
- private void setFullscreenTranslationX(float fullscreenTranslationX) {
- mFullscreenTranslationX = fullscreenTranslationX;
+ private void setNonGridTranslationX(float nonGridTranslationX) {
+ mNonGridTranslationX = nonGridTranslationX;
applyTranslationX();
}
- private void setFullscreenTranslationY(float fullscreenTranslationY) {
- mFullscreenTranslationY = fullscreenTranslationY;
- applyTranslationY();
- }
-
- private void setNonFullscreenTranslationX(float nonFullscreenTranslationX) {
- mNonFullscreenTranslationX = nonFullscreenTranslationX;
- applyTranslationX();
- }
-
- private void setNonFullscreenTranslationY(float nonFullscreenTranslationY) {
- mNonFullscreenTranslationY = nonFullscreenTranslationY;
+ private void setNonGridTranslationY(float nonGridTranslationY) {
+ mNonGridTranslationY = nonGridTranslationY;
applyTranslationY();
}
@@ -1082,13 +1053,10 @@
public float getScrollAdjustment(boolean fullscreenEnabled, boolean gridEnabled) {
float scrollAdjustment = 0;
- if (fullscreenEnabled) {
- scrollAdjustment += getPrimaryFullscreenTranslationProperty().get(this);
- } else {
- scrollAdjustment += getPrimaryNonFullscreenTranslationProperty().get(this);
- }
if (gridEnabled) {
scrollAdjustment += mGridTranslationX;
+ } else {
+ scrollAdjustment += getPrimaryNonGridTranslationProperty().get(this);
}
return scrollAdjustment;
}
@@ -1100,7 +1068,7 @@
public float getSizeAdjustment(boolean fullscreenEnabled) {
float sizeAdjustment = 1;
if (fullscreenEnabled) {
- sizeAdjustment *= mFullscreenScale;
+ sizeAdjustment *= mNonGridScale;
}
return sizeAdjustment;
}
@@ -1125,9 +1093,7 @@
* change according to a temporary state (e.g. task offset).
*/
public float getPersistentTranslationX() {
- return getFullscreenTrans(mFullscreenTranslationX)
- + getNonFullscreenTrans(mNonFullscreenTranslationX)
- + getGridTrans(mGridTranslationX);
+ return getNonGridTrans(mNonGridTranslationX) + getGridTrans(mGridTranslationX);
}
/**
@@ -1136,8 +1102,7 @@
*/
public float getPersistentTranslationY() {
return mBoxTranslationY
- + getFullscreenTrans(mFullscreenTranslationY)
- + getNonFullscreenTrans(mNonFullscreenTranslationY)
+ + getNonGridTrans(mNonGridTranslationY)
+ getGridTrans(mGridTranslationY);
}
@@ -1171,24 +1136,14 @@
TASK_RESISTANCE_TRANSLATION_X, TASK_RESISTANCE_TRANSLATION_Y);
}
- public FloatProperty<TaskView> getPrimaryFullscreenTranslationProperty() {
+ public FloatProperty<TaskView> getPrimaryNonGridTranslationProperty() {
return getPagedOrientationHandler().getPrimaryValue(
- FULLSCREEN_TRANSLATION_X, FULLSCREEN_TRANSLATION_Y);
+ NON_GRID_TRANSLATION_X, NON_GRID_TRANSLATION_Y);
}
- public FloatProperty<TaskView> getSecondaryFullscreenTranslationProperty() {
+ public FloatProperty<TaskView> getSecondaryNonGridTranslationProperty() {
return getPagedOrientationHandler().getSecondaryValue(
- FULLSCREEN_TRANSLATION_X, FULLSCREEN_TRANSLATION_Y);
- }
-
- public FloatProperty<TaskView> getPrimaryNonFullscreenTranslationProperty() {
- return getPagedOrientationHandler().getPrimaryValue(
- NON_FULLSCREEN_TRANSLATION_X, NON_FULLSCREEN_TRANSLATION_Y);
- }
-
- public FloatProperty<TaskView> getSecondaryNonFullscreenTranslationProperty() {
- return getPagedOrientationHandler().getSecondaryValue(
- NON_FULLSCREEN_TRANSLATION_X, NON_FULLSCREEN_TRANSLATION_Y);
+ NON_GRID_TRANSLATION_X, NON_GRID_TRANSLATION_Y);
}
@Override
@@ -1326,19 +1281,9 @@
mIconView.setVisibility(progress < 1 ? VISIBLE : INVISIBLE);
getThumbnail().getTaskOverlay().setFullscreenProgress(progress);
- applyTranslationX();
- applyTranslationY();
- applyScale();
-
TaskThumbnailView thumbnail = getThumbnail();
updateCurrentFullscreenParams(thumbnail.getPreviewPositionHelper());
- if (!getRecentsView().isTaskIconScaledDown(this)) {
- // Some of the items in here are dependent on the current fullscreen params, but don't
- // update them if the icon is supposed to be scaled down.
- setIconScaleAndDim(progress, true /* invert */);
- }
-
thumbnail.setFullscreenParams(mCurrentFullscreenParams);
mOutlineProvider.updateParams(
mCurrentFullscreenParams,
@@ -1363,7 +1308,7 @@
*/
void updateTaskSize() {
ViewGroup.LayoutParams params = getLayoutParams();
- float fullscreenScale;
+ float nonGridScale;
float boxTranslationY;
int expectedWidth;
int expectedHeight;
@@ -1394,18 +1339,18 @@
expectedHeight = boxHeight + thumbnailPadding;
// Scale to to fit task Rect.
- fullscreenScale = taskWidth / (float) boxWidth;
+ nonGridScale = taskWidth / (float) boxWidth;
// Align to top of task Rect.
boxTranslationY = (expectedHeight - thumbnailPadding - taskHeight) / 2.0f;
} else {
- fullscreenScale = 1f;
+ nonGridScale = 1f;
boxTranslationY = 0f;
expectedWidth = ViewGroup.LayoutParams.MATCH_PARENT;
expectedHeight = ViewGroup.LayoutParams.MATCH_PARENT;
}
- setFullscreenScale(fullscreenScale);
+ setNonGridScale(nonGridScale);
setBoxTranslationY(boxTranslationY);
if (params.width != expectedWidth || params.height != expectedHeight) {
params.width = expectedWidth;
@@ -1414,20 +1359,15 @@
}
}
- private float getFullscreenTrans(float endTranslation) {
- float progress = FULLSCREEN_INTERPOLATOR.getInterpolation(mFullscreenProgress);
- return Utilities.mapRange(progress, 0, endTranslation);
- }
-
- private float getNonFullscreenTrans(float endTranslation) {
- return endTranslation - getFullscreenTrans(endTranslation);
- }
-
private float getGridTrans(float endTranslation) {
- float progress = ACCEL_DEACCEL.getInterpolation(mGridProgress);
+ float progress = GRID_INTERPOLATOR.getInterpolation(mGridProgress);
return Utilities.mapRange(progress, 0, endTranslation);
}
+ private float getNonGridTrans(float endTranslation) {
+ return endTranslation - getGridTrans(endTranslation);
+ }
+
public boolean isRunningTask() {
if (getRecentsView() == null) {
return false;