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