Merge "Make all tasks in intermediate carousel have the same size" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
437b22e203
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user