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

Commit 9328a512 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Adding translationX to workspace card to that it is slightly visible

behind the first card

Change-Id: Idc0c169fb92510e74b983160778bd9dbacf29943
parent 8c8fdec3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -22,4 +22,5 @@
    <dimen name="quickstep_fling_threshold_velocity">500dp</dimen>
    <dimen name="quickstep_fling_min_velocity">250dp</dimen>

    <dimen name="workspace_overview_offset_x">-30dp</dimen>
</resources>
+14 −3
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.view.View;

import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.Workspace;
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
@@ -49,10 +50,12 @@ public class OverviewState extends LauncherState {
        }

        RecentsView rv = launcher.getOverviewPanel();
        float overlap = 0;
        if (rv.getCurrentPage() >= rv.getFirstTaskIndex()) {
            Utilities.scaleRectAboutCenter(pageRect, WORKSPACE_SCALE_ON_SCROLL);
            overlap = launcher.getResources().getDimension(R.dimen.workspace_overview_offset_x);
        }
        return getScaleAndTranslationForPageRect(launcher, pageRect);
        return getScaleAndTranslationForPageRect(launcher, overlap, pageRect);
    }

    @Override
@@ -77,15 +80,23 @@ public class OverviewState extends LauncherState {
        return launcher.getOverviewPanel();
    }

    public static float[] getScaleAndTranslationForPageRect(Launcher launcher, Rect pageRect) {
    public static float[] getScaleAndTranslationForPageRect(Launcher launcher, float offsetX,
            Rect pageRect) {
        Workspace ws = launcher.getWorkspace();
        float childWidth = ws.getNormalChildWidth();

        Rect insets = launcher.getDragLayer().getInsets();
        float scale = pageRect.width() / childWidth;

        float translationX = offsetX / scale;
        if (Utilities.isRtl(launcher.getResources())) {
            translationX = -translationX;
        }

        float halfHeight = ws.getHeight() / 2;
        float childTop = halfHeight - scale * (halfHeight - ws.getPaddingTop() - insets.top);
        return new float[] {scale, pageRect.top - childTop};
        float translationY = pageRect.top - childTop;

        return new float[] {scale, translationX, translationY};
    }
}
+12 −6
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ import com.android.quickstep.RecentsView.ScrollState;
public class WorkspaceCard extends FrameLayout implements PageCallbacks, OnClickListener {

    private final Rect mTempRect = new Rect();
    private final float[] mEvaluatedFloats = new float[2];
    private final float[] mEvaluatedFloats = new float[3];
    private final FloatArrayEvaluator mEvaluator = new FloatArrayEvaluator(mEvaluatedFloats);

    // UI related information
@@ -151,21 +151,25 @@ public class WorkspaceCard extends FrameLayout implements PageCallbacks, OnClick

    @Override
    public int onPageScroll(ScrollState scrollState) {
        setTranslationX(scrollState.distanceFromScreenCenter);

        float factor = scrollState.linearInterpolation;
        float scale = factor * WORKSPACE_SCALE_ON_SCROLL + (1 - factor);
        setScaleX(scale);
        setScaleY(scale);

        float translateX = scrollState.distanceFromScreenCenter;
        if (mIsWorkspaceScrollingEnabled) {
            initUiData();

            mEvaluator.evaluate(factor, mScaleAndTranslatePage0, mScaleAndTranslatePage1);
            mWorkspace.setScaleX(mEvaluatedFloats[0]);
            mWorkspace.setScaleY(mEvaluatedFloats[0]);
            mWorkspace.setTranslationY(mEvaluatedFloats[1]);
            mWorkspace.setTranslationX(mEvaluatedFloats[1]);
            mWorkspace.setTranslationY(mEvaluatedFloats[2]);
            translateX += mEvaluatedFloats[1];
        }

        setTranslationX(translateX);

        return SCROLL_TYPE_WORKSPACE;
    }

@@ -174,13 +178,15 @@ public class WorkspaceCard extends FrameLayout implements PageCallbacks, OnClick
            return;
        }

        float overlap = getResources().getDimension(R.dimen.workspace_overview_offset_x);

        RecentsView.getPageRect(mLauncher, mTempRect);
        mScaleAndTranslatePage0 = OverviewState
                .getScaleAndTranslationForPageRect(mLauncher, mTempRect);
                .getScaleAndTranslationForPageRect(mLauncher, 0, mTempRect);
        Rect scaledDown = new Rect(mTempRect);
        Utilities.scaleRectAboutCenter(scaledDown, WORKSPACE_SCALE_ON_SCROLL);
        mScaleAndTranslatePage1 = OverviewState
                .getScaleAndTranslationForPageRect(mLauncher, scaledDown);
                .getScaleAndTranslationForPageRect(mLauncher, overlap, scaledDown);
        mUIDataValid = true;
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ public class LauncherState {
    }

    public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
        return new float[] {1, 0};
        return new float[] {1, 0, 0};
    }

    public float getHoseatAlpha(Launcher launcher) {
+5 −5
Original line number Diff line number Diff line
@@ -123,10 +123,8 @@ public class WorkspaceStateTransitionAnimation {
     * Starts a transition animation for the workspace.
     */
    private void setWorkspaceProperty(LauncherState state, PropertySetter propertySetter) {
        float[] scaleAndTranslationY = state.getWorkspaceScaleAndTranslation(mLauncher);
        mNewScale = scaleAndTranslationY[0];
        final float finalWorkspaceTranslationY = scaleAndTranslationY[1];

        float[] scaleAndTranslation = state.getWorkspaceScaleAndTranslation(mLauncher);
        mNewScale = scaleAndTranslation[0];
        PageAlphaProvider pageAlphaProvider = state.getWorkspacePageAlphaProvider(mLauncher);
        final int childCount = mWorkspace.getChildCount();
        for (int i = 0; i < childCount; i++) {
@@ -135,8 +133,10 @@ public class WorkspaceStateTransitionAnimation {
        }

        propertySetter.setFloat(mWorkspace, SCALE_PROPERTY, mNewScale, Interpolators.ZOOM_IN);
        propertySetter.setFloat(mWorkspace, View.TRANSLATION_X,
                scaleAndTranslation[1], Interpolators.ZOOM_IN);
        propertySetter.setFloat(mWorkspace, View.TRANSLATION_Y,
                finalWorkspaceTranslationY, Interpolators.ZOOM_IN);
                scaleAndTranslation[2], Interpolators.ZOOM_IN);

        float hotseatAlpha = state.getHoseatAlpha(mLauncher);
        propertySetter.setViewAlpha(mWorkspace.createHotseatAlphaAnimator(hotseatAlpha),
Loading