Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 701947dd authored by Alex Chau's avatar Alex Chau Committed by Android (Google) Code Review
Browse files

Merge "Apply TaskView's (non)fullscreenTranslation correctly in emulated landscape" into sc-dev

parents 81d943d3 8ac1a576
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -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();
@@ -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);
+95 −7
Original line number Diff line number Diff line
@@ -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
@@ -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;
@@ -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)
@@ -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();
@@ -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;
@@ -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() {
@@ -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.