Merge "Make all tasks in intermediate carousel have the same size" into sc-v2-dev am: 437b22e203

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/14844554

Change-Id: Idc70ed9f0cb67829a442c7bc9f1c241e949fd7ce
This commit is contained in:
TreeHugger Robot
2021-06-08 21:07:51 +00:00
committed by Automerger Merge Worker
5 changed files with 102 additions and 163 deletions
@@ -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 @@ public abstract class BaseRecentsViewStateController<T extends RecentsView>
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();
@@ -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 @@ public class FallbackRecentsStateController implements StateHandler<RecentsState
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));
@@ -49,6 +49,7 @@ public class AnimatorControllerWithResistance {
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 @@ public class AnimatorControllerWithResistance {
// 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 @@ public class AnimatorControllerWithResistance {
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) {
@@ -373,6 +373,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
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 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
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 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
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 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
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 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
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 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
setEnableFreeScroll(false);
setEnableDrawingLiveTile(false);
setRunningTaskHidden(true);
setRunningTaskIconScaledDown(true);
setTaskIconScaledDown(true);
}
/**
@@ -1674,9 +1670,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
*/
public void onSwipeUpAnimationSuccess() {
Log.d("b/186444448", "onSwipeUpAnimationSuccess");
if (getRunningTaskView() != null) {
animateUpRunningTaskIconScale();
}
animateUpTaskIconScale();
setSwipeDownShouldLaunchApp(true);
}
@@ -1760,7 +1754,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
setRunningTaskViewShowScreenshot(true);
}
setRunningTaskHidden(false);
animateUpRunningTaskIconScale();
animateUpTaskIconScale();
animateActionsViewIn();
mCurrentGestureEndTarget = null;
@@ -1824,7 +1818,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
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 abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
}
}
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 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
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 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
// 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 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
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 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
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));
@@ -158,7 +158,7 @@ public class TaskView extends FrameLayout implements Reusable {
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 @@ public class TaskView extends FrameLayout implements Reusable {
}
};
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 @@ public class TaskView extends FrameLayout implements Reusable {
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 @@ public class TaskView extends FrameLayout implements Reusable {
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 @@ public class TaskView extends FrameLayout implements Reusable {
@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 @@ public class TaskView extends FrameLayout implements Reusable {
}
}
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 @@ public class TaskView extends FrameLayout implements Reusable {
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 @@ public class TaskView extends FrameLayout implements Reusable {
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 class TaskView extends FrameLayout implements Reusable {
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 class TaskView extends FrameLayout implements Reusable {
public float getSizeAdjustment(boolean fullscreenEnabled) {
float sizeAdjustment = 1;
if (fullscreenEnabled) {
sizeAdjustment *= mFullscreenScale;
sizeAdjustment *= mNonGridScale;
}
return sizeAdjustment;
}
@@ -1125,9 +1093,7 @@ public class TaskView extends FrameLayout implements Reusable {
* 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 class TaskView extends FrameLayout implements Reusable {
*/
public float getPersistentTranslationY() {
return mBoxTranslationY
+ getFullscreenTrans(mFullscreenTranslationY)
+ getNonFullscreenTrans(mNonFullscreenTranslationY)
+ getNonGridTrans(mNonGridTranslationY)
+ getGridTrans(mGridTranslationY);
}
@@ -1171,24 +1136,14 @@ public class TaskView extends FrameLayout implements Reusable {
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 @@ public class TaskView extends FrameLayout implements Reusable {
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,
@@ -1364,7 +1309,7 @@ public class TaskView extends FrameLayout implements Reusable {
*/
void updateTaskSize() {
ViewGroup.LayoutParams params = getLayoutParams();
float fullscreenScale;
float nonGridScale;
float boxTranslationY;
int expectedWidth;
int expectedHeight;
@@ -1395,18 +1340,18 @@ public class TaskView extends FrameLayout implements Reusable {
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;
@@ -1415,20 +1360,15 @@ public class TaskView extends FrameLayout implements Reusable {
}
}
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;