Loading quickstep/src/com/android/quickstep/views/RecentsView.java +7 −8 Original line number Diff line number Diff line Loading @@ -1277,23 +1277,20 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T } float accumulatedTranslationX = 0; float[] fullscreenTranslations = new float[taskCount]; for (int i = 0; i < taskCount; i++) { TaskView taskView = getTaskViewAt(i); taskView.updateTaskSize(); fullscreenTranslations[i] += accumulatedTranslationX; taskView.getPrimaryFullscreenTranslationProperty().set(taskView, accumulatedTranslationX); taskView.getSecondaryFullscreenTranslationProperty().set(taskView, 0f); // Compensate space caused by TaskView scaling. float widthDiff = taskView.getLayoutParams().width * (1 - taskView.getFullscreenScale()); // Compensate page spacing widening caused by RecentsView scaling. widthDiff += mPageSpacing * (1 - 1 / mFullscreenScale); float fullscreenTranslationX = mIsRtl ? widthDiff : -widthDiff; accumulatedTranslationX += fullscreenTranslationX; accumulatedTranslationX += mIsRtl ? widthDiff : -widthDiff; } for (int i = 0; i < taskCount; i++) { getTaskViewAt(i).setFullscreenTranslationX(fullscreenTranslations[i]); } mClearAllButton.setFullscreenTranslationPrimary(accumulatedTranslationX); updateGridProperties(); Loading Loading @@ -1998,7 +1995,9 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T gridTranslationAnimators.add(taskDismissAnimator); } taskView.setGridTranslationX(gridTranslations[i] - snappedTaskGridTranslationX); taskView.setNonFullscreenTranslationX(snappedTaskFullscreenScrollAdjustment); taskView.getPrimaryNonFullscreenTranslationProperty().set(taskView, snappedTaskFullscreenScrollAdjustment); taskView.getSecondaryNonFullscreenTranslationProperty().set(taskView, 0f); } AnimatorSet gridTranslationAnimatorSet = new AnimatorSet(); gridTranslationAnimatorSet.playTogether(gridTranslationAnimators); Loading quickstep/src/com/android/quickstep/views/TaskView.java +95 −7 Original line number Diff line number Diff line Loading @@ -250,6 +250,58 @@ public class TaskView extends FrameLayout implements Reusable { } }; private static final FloatProperty<TaskView> FULLSCREEN_TRANSLATION_X = new FloatProperty<TaskView>("fullscreenTranslationX") { @Override public void setValue(TaskView taskView, float v) { taskView.setFullscreenTranslationX(v); } @Override public Float get(TaskView taskView) { return taskView.mFullscreenTranslationX; } }; private static final FloatProperty<TaskView> FULLSCREEN_TRANSLATION_Y = new FloatProperty<TaskView>("fullscreenTranslationY") { @Override public void setValue(TaskView taskView, float v) { taskView.setFullscreenTranslationY(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; } }; private static final FloatProperty<TaskView> COLOR_TINT = new FloatProperty<TaskView>("colorTint") { @Override Loading Loading @@ -284,9 +336,11 @@ public class TaskView extends FrameLayout implements Reusable { 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; Loading Loading @@ -786,8 +840,9 @@ public class TaskView extends FrameLayout implements Reusable { @Override public void onRecycle() { mFullscreenTranslationX = mNonFullscreenTranslationX = mGridTranslationX = mGridTranslationY = mBoxTranslationY = 0f; mFullscreenTranslationX = mFullscreenTranslationY = mNonFullscreenTranslationX = mNonFullscreenTranslationY = 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) Loading Loading @@ -929,16 +984,26 @@ public class TaskView extends FrameLayout implements Reusable { applyTranslationY(); } public void setFullscreenTranslationX(float fullscreenTranslationX) { private void setFullscreenTranslationX(float fullscreenTranslationX) { mFullscreenTranslationX = fullscreenTranslationX; applyTranslationX(); } public void setNonFullscreenTranslationX(float nonFullscreenTranslationX) { private void setFullscreenTranslationY(float fullscreenTranslationY) { mFullscreenTranslationY = fullscreenTranslationY; applyTranslationY(); } private void setNonFullscreenTranslationX(float nonFullscreenTranslationX) { mNonFullscreenTranslationX = nonFullscreenTranslationX; applyTranslationX(); } private void setNonFullscreenTranslationY(float nonFullscreenTranslationY) { mNonFullscreenTranslationY = nonFullscreenTranslationY; applyTranslationY(); } public void setGridTranslationX(float gridTranslationX) { mGridTranslationX = gridTranslationX; applyTranslationX(); Loading @@ -960,9 +1025,9 @@ public class TaskView extends FrameLayout implements Reusable { public float getScrollAdjustment(boolean fullscreenEnabled, boolean gridEnabled) { float scrollAdjustment = 0; if (fullscreenEnabled) { scrollAdjustment += mFullscreenTranslationX; scrollAdjustment += getPrimaryFullscreenTranslationProperty().get(this); } else { scrollAdjustment += mNonFullscreenTranslationX; scrollAdjustment += getPrimaryNonFullscreenTranslationProperty().get(this); } if (gridEnabled) { scrollAdjustment += mGridTranslationX; Loading Loading @@ -1012,7 +1077,10 @@ public class TaskView extends FrameLayout implements Reusable { * change according to a temporary state (e.g. task offset). */ public float getPersistentTranslationY() { return getGridTrans(mGridTranslationY) + mBoxTranslationY; return mBoxTranslationY + getFullscreenTrans(mFullscreenTranslationY) + getNonFullscreenTrans(mNonFullscreenTranslationY) + getGridTrans(mGridTranslationY); } public FloatProperty<TaskView> getPrimaryDismissTranslationProperty() { Loading @@ -1035,6 +1103,26 @@ public class TaskView extends FrameLayout implements Reusable { TASK_RESISTANCE_TRANSLATION_X, TASK_RESISTANCE_TRANSLATION_Y); } public FloatProperty<TaskView> getPrimaryFullscreenTranslationProperty() { return getPagedOrientationHandler().getPrimaryValue( FULLSCREEN_TRANSLATION_X, FULLSCREEN_TRANSLATION_Y); } public FloatProperty<TaskView> getSecondaryFullscreenTranslationProperty() { 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); } @Override public boolean hasOverlappingRendering() { // TODO: Clip-out the icon region from the thumbnail, since they are overlapping. Loading Loading
quickstep/src/com/android/quickstep/views/RecentsView.java +7 −8 Original line number Diff line number Diff line Loading @@ -1277,23 +1277,20 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T } float accumulatedTranslationX = 0; float[] fullscreenTranslations = new float[taskCount]; for (int i = 0; i < taskCount; i++) { TaskView taskView = getTaskViewAt(i); taskView.updateTaskSize(); fullscreenTranslations[i] += accumulatedTranslationX; taskView.getPrimaryFullscreenTranslationProperty().set(taskView, accumulatedTranslationX); taskView.getSecondaryFullscreenTranslationProperty().set(taskView, 0f); // Compensate space caused by TaskView scaling. float widthDiff = taskView.getLayoutParams().width * (1 - taskView.getFullscreenScale()); // Compensate page spacing widening caused by RecentsView scaling. widthDiff += mPageSpacing * (1 - 1 / mFullscreenScale); float fullscreenTranslationX = mIsRtl ? widthDiff : -widthDiff; accumulatedTranslationX += fullscreenTranslationX; accumulatedTranslationX += mIsRtl ? widthDiff : -widthDiff; } for (int i = 0; i < taskCount; i++) { getTaskViewAt(i).setFullscreenTranslationX(fullscreenTranslations[i]); } mClearAllButton.setFullscreenTranslationPrimary(accumulatedTranslationX); updateGridProperties(); Loading Loading @@ -1998,7 +1995,9 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T gridTranslationAnimators.add(taskDismissAnimator); } taskView.setGridTranslationX(gridTranslations[i] - snappedTaskGridTranslationX); taskView.setNonFullscreenTranslationX(snappedTaskFullscreenScrollAdjustment); taskView.getPrimaryNonFullscreenTranslationProperty().set(taskView, snappedTaskFullscreenScrollAdjustment); taskView.getSecondaryNonFullscreenTranslationProperty().set(taskView, 0f); } AnimatorSet gridTranslationAnimatorSet = new AnimatorSet(); gridTranslationAnimatorSet.playTogether(gridTranslationAnimators); Loading
quickstep/src/com/android/quickstep/views/TaskView.java +95 −7 Original line number Diff line number Diff line Loading @@ -250,6 +250,58 @@ public class TaskView extends FrameLayout implements Reusable { } }; private static final FloatProperty<TaskView> FULLSCREEN_TRANSLATION_X = new FloatProperty<TaskView>("fullscreenTranslationX") { @Override public void setValue(TaskView taskView, float v) { taskView.setFullscreenTranslationX(v); } @Override public Float get(TaskView taskView) { return taskView.mFullscreenTranslationX; } }; private static final FloatProperty<TaskView> FULLSCREEN_TRANSLATION_Y = new FloatProperty<TaskView>("fullscreenTranslationY") { @Override public void setValue(TaskView taskView, float v) { taskView.setFullscreenTranslationY(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; } }; private static final FloatProperty<TaskView> COLOR_TINT = new FloatProperty<TaskView>("colorTint") { @Override Loading Loading @@ -284,9 +336,11 @@ public class TaskView extends FrameLayout implements Reusable { 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; Loading Loading @@ -786,8 +840,9 @@ public class TaskView extends FrameLayout implements Reusable { @Override public void onRecycle() { mFullscreenTranslationX = mNonFullscreenTranslationX = mGridTranslationX = mGridTranslationY = mBoxTranslationY = 0f; mFullscreenTranslationX = mFullscreenTranslationY = mNonFullscreenTranslationX = mNonFullscreenTranslationY = 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) Loading Loading @@ -929,16 +984,26 @@ public class TaskView extends FrameLayout implements Reusable { applyTranslationY(); } public void setFullscreenTranslationX(float fullscreenTranslationX) { private void setFullscreenTranslationX(float fullscreenTranslationX) { mFullscreenTranslationX = fullscreenTranslationX; applyTranslationX(); } public void setNonFullscreenTranslationX(float nonFullscreenTranslationX) { private void setFullscreenTranslationY(float fullscreenTranslationY) { mFullscreenTranslationY = fullscreenTranslationY; applyTranslationY(); } private void setNonFullscreenTranslationX(float nonFullscreenTranslationX) { mNonFullscreenTranslationX = nonFullscreenTranslationX; applyTranslationX(); } private void setNonFullscreenTranslationY(float nonFullscreenTranslationY) { mNonFullscreenTranslationY = nonFullscreenTranslationY; applyTranslationY(); } public void setGridTranslationX(float gridTranslationX) { mGridTranslationX = gridTranslationX; applyTranslationX(); Loading @@ -960,9 +1025,9 @@ public class TaskView extends FrameLayout implements Reusable { public float getScrollAdjustment(boolean fullscreenEnabled, boolean gridEnabled) { float scrollAdjustment = 0; if (fullscreenEnabled) { scrollAdjustment += mFullscreenTranslationX; scrollAdjustment += getPrimaryFullscreenTranslationProperty().get(this); } else { scrollAdjustment += mNonFullscreenTranslationX; scrollAdjustment += getPrimaryNonFullscreenTranslationProperty().get(this); } if (gridEnabled) { scrollAdjustment += mGridTranslationX; Loading Loading @@ -1012,7 +1077,10 @@ public class TaskView extends FrameLayout implements Reusable { * change according to a temporary state (e.g. task offset). */ public float getPersistentTranslationY() { return getGridTrans(mGridTranslationY) + mBoxTranslationY; return mBoxTranslationY + getFullscreenTrans(mFullscreenTranslationY) + getNonFullscreenTrans(mNonFullscreenTranslationY) + getGridTrans(mGridTranslationY); } public FloatProperty<TaskView> getPrimaryDismissTranslationProperty() { Loading @@ -1035,6 +1103,26 @@ public class TaskView extends FrameLayout implements Reusable { TASK_RESISTANCE_TRANSLATION_X, TASK_RESISTANCE_TRANSLATION_Y); } public FloatProperty<TaskView> getPrimaryFullscreenTranslationProperty() { return getPagedOrientationHandler().getPrimaryValue( FULLSCREEN_TRANSLATION_X, FULLSCREEN_TRANSLATION_Y); } public FloatProperty<TaskView> getSecondaryFullscreenTranslationProperty() { 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); } @Override public boolean hasOverlappingRendering() { // TODO: Clip-out the icon region from the thumbnail, since they are overlapping. Loading