Add translationX to overview state
States return ScaleAndTranslation instead of float[].
Also separate overview translate interpolator from overview scale interpolator.
Change-Id: I5e65dde3f436055ff5e7f5736f1a4b712377b9cb
diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java
index 875288a..b6e00cc 100644
--- a/src/com/android/launcher3/LauncherState.java
+++ b/src/com/android/launcher3/LauncherState.java
@@ -183,17 +183,17 @@
return Arrays.copyOf(sAllStates, sAllStates.length);
}
- public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
- return new float[] {1, 0, 0};
+ public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) {
+ return new ScaleAndTranslation(1, 0, 0);
}
- public float[] getHotseatScaleAndTranslation(Launcher launcher) {
+ public ScaleAndTranslation getHotseatScaleAndTranslation(Launcher launcher) {
// For most states, treat the hotseat as if it were part of the workspace.
return getWorkspaceScaleAndTranslation(launcher);
}
- public float[] getOverviewScaleAndTranslationY(Launcher launcher) {
- return new float[] {1.1f, 0f};
+ public ScaleAndTranslation getOverviewScaleAndTranslation(Launcher launcher) {
+ return new ScaleAndTranslation(1.1f, 0f, 0f);
}
public void onStateEnabled(Launcher launcher) {
@@ -281,4 +281,16 @@
public abstract float getPageAlpha(int pageIndex);
}
+
+ public static class ScaleAndTranslation {
+ public float scale;
+ public float translationX;
+ public float translationY;
+
+ public ScaleAndTranslation(float scale, float translationX, float translationY) {
+ this.scale = scale;
+ this.translationX = translationX;
+ this.translationY = translationY;
+ }
+ }
}
diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
index 0507470..d0f1920 100644
--- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
+++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
@@ -31,6 +31,7 @@
import android.view.animation.Interpolator;
import com.android.launcher3.LauncherState.PageAlphaProvider;
+import com.android.launcher3.LauncherState.ScaleAndTranslation;
import com.android.launcher3.LauncherStateManager.AnimationConfig;
import com.android.launcher3.anim.AnimatorSetBuilder;
import com.android.launcher3.anim.PropertySetter;
@@ -71,9 +72,10 @@
*/
private void setWorkspaceProperty(LauncherState state, PropertySetter propertySetter,
AnimatorSetBuilder builder, AnimationConfig config) {
- float[] scaleAndTranslation = state.getWorkspaceScaleAndTranslation(mLauncher);
- float[] hotseatScaleAndTranslation = state.getHotseatScaleAndTranslation(mLauncher);
- mNewScale = scaleAndTranslation[0];
+ ScaleAndTranslation scaleAndTranslation = state.getWorkspaceScaleAndTranslation(mLauncher);
+ ScaleAndTranslation hotseatScaleAndTranslation = state.getHotseatScaleAndTranslation(
+ mLauncher);
+ mNewScale = scaleAndTranslation.scale;
PageAlphaProvider pageAlphaProvider = state.getWorkspacePageAlphaProvider(mLauncher);
final int childCount = mWorkspace.getChildCount();
for (int i = 0; i < childCount; i++) {
@@ -98,7 +100,7 @@
dragLayer.mapCoordInSelfToDescendant(hotseat, workspacePivot);
hotseat.setPivotX(workspacePivot[0]);
hotseat.setPivotY(workspacePivot[1]);
- float hotseatScale = hotseatScaleAndTranslation[0];
+ float hotseatScale = hotseatScaleAndTranslation.scale;
propertySetter.setFloat(hotseat, SCALE_PROPERTY, hotseatScale, scaleInterpolator);
float hotseatIconsAlpha = (elements & HOTSEAT_ICONS) != 0 ? 1 : 0;
@@ -114,14 +116,14 @@
Interpolator translationInterpolator = !playAtomicComponent ? LINEAR : ZOOM_OUT;
propertySetter.setFloat(mWorkspace, View.TRANSLATION_X,
- scaleAndTranslation[1], translationInterpolator);
+ scaleAndTranslation.translationX, translationInterpolator);
propertySetter.setFloat(mWorkspace, View.TRANSLATION_Y,
- scaleAndTranslation[2], translationInterpolator);
+ scaleAndTranslation.translationY, translationInterpolator);
propertySetter.setFloat(hotseat, View.TRANSLATION_Y,
- hotseatScaleAndTranslation[2], translationInterpolator);
+ hotseatScaleAndTranslation.translationX, translationInterpolator);
propertySetter.setFloat(mWorkspace.getPageIndicator(), View.TRANSLATION_Y,
- hotseatScaleAndTranslation[2], translationInterpolator);
+ hotseatScaleAndTranslation.translationY, translationInterpolator);
// Set scrim
WorkspaceAndHotseatScrim scrim = mLauncher.getDragLayer().getScrim();
diff --git a/src/com/android/launcher3/anim/AnimatorSetBuilder.java b/src/com/android/launcher3/anim/AnimatorSetBuilder.java
index e135c0d..3ac9d3c 100644
--- a/src/com/android/launcher3/anim/AnimatorSetBuilder.java
+++ b/src/com/android/launcher3/anim/AnimatorSetBuilder.java
@@ -32,8 +32,9 @@
public static final int ANIM_WORKSPACE_SCALE = 1;
public static final int ANIM_WORKSPACE_FADE = 2;
public static final int ANIM_OVERVIEW_SCALE = 3;
- public static final int ANIM_OVERVIEW_FADE = 4;
- public static final int ANIM_ALL_APPS_FADE = 5;
+ public static final int ANIM_OVERVIEW_TRANSLATE = 4;
+ public static final int ANIM_OVERVIEW_FADE = 5;
+ public static final int ANIM_ALL_APPS_FADE = 6;
public static final int FLAG_DONT_ANIMATE_OVERVIEW = 1 << 0;
diff --git a/src/com/android/launcher3/states/SpringLoadedState.java b/src/com/android/launcher3/states/SpringLoadedState.java
index fcace98..be3e6c9 100644
--- a/src/com/android/launcher3/states/SpringLoadedState.java
+++ b/src/com/android/launcher3/states/SpringLoadedState.java
@@ -41,7 +41,7 @@
}
@Override
- public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
+ public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) {
DeviceProfile grid = launcher.getDeviceProfile();
Workspace ws = launcher.getWorkspace();
if (ws.getChildCount() == 0) {
@@ -50,7 +50,7 @@
if (grid.isVerticalBarLayout()) {
float scale = grid.workspaceSpringLoadShrinkFactor;
- return new float[] {scale, 0, 0};
+ return new ScaleAndTranslation(scale, 0, 0);
}
float scale = grid.workspaceSpringLoadShrinkFactor;
@@ -69,12 +69,12 @@
float myCenter = ws.getTop() + halfHeight;
float cellTopFromCenter = halfHeight - ws.getChildAt(0).getTop();
float actualCellTop = myCenter - cellTopFromCenter * scale;
- return new float[] { scale, 0, (desiredCellTop - actualCellTop) / scale};
+ return new ScaleAndTranslation(scale, 0, (desiredCellTop - actualCellTop) / scale);
}
@Override
- public float[] getHotseatScaleAndTranslation(Launcher launcher) {
- return new float[] {1, 0, 0};
+ public ScaleAndTranslation getHotseatScaleAndTranslation(Launcher launcher) {
+ return new ScaleAndTranslation(1, 0, 0);
}
@Override