Adding translationX to workspace card to that it is slightly visible
behind the first card

Change-Id: Idc0c169fb92510e74b983160778bd9dbacf29943
diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index 4f85957..a5716ea 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -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>
diff --git a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
index f34aa85..f1da817 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
@@ -22,6 +22,7 @@
 
 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 @@
         }
 
         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 @@
         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};
     }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/WorkspaceCard.java b/quickstep/src/com/android/launcher3/uioverrides/WorkspaceCard.java
index 990d286..9f7cffe 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/WorkspaceCard.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/WorkspaceCard.java
@@ -39,7 +39,7 @@
 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 @@
 
     @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 @@
             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;
     }
 }
diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java
index 2beaca1..a1f5879 100644
--- a/src/com/android/launcher3/LauncherState.java
+++ b/src/com/android/launcher3/LauncherState.java
@@ -137,7 +137,7 @@
     }
 
     public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
-        return new float[] {1, 0};
+        return new float[] {1, 0, 0};
     }
 
     public float getHoseatAlpha(Launcher launcher) {
diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
index 80818f2..9ed86ed 100644
--- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
+++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
@@ -123,10 +123,8 @@
      * 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 @@
         }
 
         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),
diff --git a/src/com/android/launcher3/states/SpringLoadedState.java b/src/com/android/launcher3/states/SpringLoadedState.java
index 995cdaa..da656db 100644
--- a/src/com/android/launcher3/states/SpringLoadedState.java
+++ b/src/com/android/launcher3/states/SpringLoadedState.java
@@ -70,7 +70,7 @@
         float myCenter = ws.getTop() + halfHeight;
         float cellTopFromCenter = halfHeight - ws.getChildAt(0).getTop();
         float actualCellTop = myCenter - cellTopFromCenter * scale;
-        return new float[] { scale, (desiredCellTop - actualCellTop) / scale};
+        return new float[] { scale, 0, (desiredCellTop - actualCellTop) / scale};
     }
 
     @Override
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsState.java b/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsState.java
index d67156f..485e97b 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsState.java
+++ b/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsState.java
@@ -68,7 +68,7 @@
 
     @Override
     public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
-        return new float[] { 1f,
+        return new float[] { 1f, 0,
                 -launcher.getAllAppsController().getShiftRange()
                         * AllAppsTransitionController.PARALLAX_COEFFICIENT};
     }
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/OverviewState.java b/src_ui_overrides/com/android/launcher3/uioverrides/OverviewState.java
index 73f208e..19967ae 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/OverviewState.java
+++ b/src_ui_overrides/com/android/launcher3/uioverrides/OverviewState.java
@@ -59,7 +59,7 @@
         int workspaceOffsetTopEdge =
                 workspaceTop + ((workspaceBottom - workspaceTop) - scaledHeight) / 2;
         int overviewOffsetTopEdge = overviewTop + (overviewBottom - overviewTop - scaledHeight) / 2;
-        return new float[] {SCALE_FACTOR, -workspaceOffsetTopEdge + overviewOffsetTopEdge };
+        return new float[] {SCALE_FACTOR, 0, -workspaceOffsetTopEdge + overviewOffsetTopEdge };
     }
 
     @Override