summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/layout/launcher.xml18
-rw-r--r--src/com/android/launcher3/LauncherState.java7
-rw-r--r--src/com/android/launcher3/LauncherStateManager.java3
-rw-r--r--src/com/android/launcher3/WorkspaceStateTransitionAnimation.java24
-rw-r--r--src/com/android/launcher3/allapps/AllAppsTransitionController.java6
-rw-r--r--src/com/android/launcher3/states/SpringLoadedState.java5
6 files changed, 44 insertions, 19 deletions
diff --git a/res/layout/launcher.xml b/res/layout/launcher.xml
index 91c37054b..c9cea8062 100644
--- a/res/layout/launcher.xml
+++ b/res/layout/launcher.xml
@@ -38,6 +38,15 @@
android:theme="@style/HomeScreenElementTheme"
launcher:pageIndicator="@+id/page_indicator" />
+ <!-- DO NOT CHANGE THE ID -->
+ <com.android.launcher3.Hotseat
+ android:id="@+id/hotseat"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:theme="@style/HomeScreenElementTheme"
+ android:importantForAccessibility="no"
+ launcher:containerType="hotseat" />
+
<include
android:id="@+id/overview_panel"
layout="@layout/overview_panel"
@@ -71,15 +80,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent" />
- <!-- DO NOT CHANGE THE ID -->
- <com.android.launcher3.Hotseat
- android:id="@+id/hotseat"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:theme="@style/HomeScreenElementTheme"
- android:importantForAccessibility="no"
- launcher:containerType="hotseat" />
-
</com.android.launcher3.dragndrop.DragLayer>
</com.android.launcher3.LauncherRootView>
diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java
index 6d8561269..b49578b14 100644
--- a/src/com/android/launcher3/LauncherState.java
+++ b/src/com/android/launcher3/LauncherState.java
@@ -188,6 +188,13 @@ public class LauncherState {
}
/**
+ * @return Whether we should scale the hotseat as if it were part of the workspace.
+ */
+ public boolean scaleHotseatWithWorkspace() {
+ return true;
+ }
+
+ /**
* Returns 2 floats designating how to transition overview:
* scale for the current and adjacent pages
* translationY factor where 0 is top aligned and 0.5 is centered vertically
diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java
index a877141f4..119058d00 100644
--- a/src/com/android/launcher3/LauncherStateManager.java
+++ b/src/com/android/launcher3/LauncherStateManager.java
@@ -17,7 +17,6 @@
package com.android.launcher3;
import static android.view.View.VISIBLE;
-
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_FADE;
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_SCALE;
@@ -298,6 +297,8 @@ public class LauncherStateManager {
if (!isWorkspaceVisible) {
workspace.setScaleX(0.92f);
workspace.setScaleY(0.92f);
+ workspace.getHotseat().setScaleX(0.92f);
+ workspace.getHotseat().setScaleY(0.92f);
}
}
}
diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
index 3e094935d..1c595ab54 100644
--- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
+++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
@@ -19,7 +19,6 @@ package com.android.launcher3;
import static com.android.launcher3.LauncherAnimUtils.DRAWABLE_ALPHA;
import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
import static com.android.launcher3.LauncherState.HOTSEAT_ICONS;
-import static com.android.launcher3.LauncherState.HOTSEAT_SEARCH_BOX;
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_WORKSPACE_FADE;
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_WORKSPACE_SCALE;
import static com.android.launcher3.anim.Interpolators.LINEAR;
@@ -35,6 +34,7 @@ import com.android.launcher3.LauncherState.PageAlphaProvider;
import com.android.launcher3.LauncherStateManager.AnimationConfig;
import com.android.launcher3.anim.AnimatorSetBuilder;
import com.android.launcher3.anim.PropertySetter;
+import com.android.launcher3.dragndrop.DragLayer;
import com.android.launcher3.graphics.WorkspaceAndHotseatScrim;
/**
@@ -84,12 +84,24 @@ public class WorkspaceStateTransitionAnimation {
Interpolator fadeInterpolator = builder.getInterpolator(ANIM_WORKSPACE_FADE,
pageAlphaProvider.interpolator);
boolean playAtomicComponent = config.playAtomicComponent();
+ Hotseat hotseat = mWorkspace.getHotseat();
if (playAtomicComponent) {
Interpolator scaleInterpolator = builder.getInterpolator(ANIM_WORKSPACE_SCALE, ZOOM_OUT);
propertySetter.setFloat(mWorkspace, SCALE_PROPERTY, mNewScale, scaleInterpolator);
+
+ if (state.scaleHotseatWithWorkspace()) {
+ DragLayer dragLayer = mLauncher.getDragLayer();
+ int[] workspacePivot = new int[]{(int) mWorkspace.getPivotX(),
+ (int) mWorkspace.getPivotY()};
+ dragLayer.getDescendantCoordRelativeToSelf(mWorkspace, workspacePivot);
+ dragLayer.mapCoordInSelfToDescendant(hotseat, workspacePivot);
+ hotseat.setPivotX(workspacePivot[0]);
+ hotseat.setPivotY(workspacePivot[1]);
+ propertySetter.setFloat(hotseat, SCALE_PROPERTY, mNewScale, scaleInterpolator);
+ }
+
float hotseatIconsAlpha = (elements & HOTSEAT_ICONS) != 0 ? 1 : 0;
- propertySetter.setViewAlpha(mLauncher.getHotseat(), hotseatIconsAlpha,
- fadeInterpolator);
+ propertySetter.setViewAlpha(hotseat, hotseatIconsAlpha, fadeInterpolator);
propertySetter.setViewAlpha(mLauncher.getWorkspace().getPageIndicator(),
hotseatIconsAlpha, fadeInterpolator);
}
@@ -104,6 +116,12 @@ public class WorkspaceStateTransitionAnimation {
scaleAndTranslation[1], translationInterpolator);
propertySetter.setFloat(mWorkspace, View.TRANSLATION_Y,
scaleAndTranslation[2], translationInterpolator);
+ if (state.scaleHotseatWithWorkspace()) {
+ propertySetter.setFloat(hotseat, View.TRANSLATION_Y,
+ scaleAndTranslation[2], translationInterpolator);
+ propertySetter.setFloat(mWorkspace.getPageIndicator(), View.TRANSLATION_Y,
+ scaleAndTranslation[2], translationInterpolator);
+ }
// Set scrim
WorkspaceAndHotseatScrim scrim = mLauncher.getDragLayer().getScrim();
diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
index bcb5eec61..93bf69daf 100644
--- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java
+++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
@@ -124,12 +124,6 @@ public class AllAppsTransitionController implements StateHandler, OnDeviceProfil
float shiftCurrent = progress * mShiftRange;
mAppsView.setTranslationY(shiftCurrent);
- float hotseatTranslation = -mShiftRange + shiftCurrent;
-
- if (!mIsVerticalLayout) {
- mLauncher.getHotseat().setTranslationY(hotseatTranslation);
- mLauncher.getWorkspace().getPageIndicator().setTranslationY(hotseatTranslation);
- }
// Use a light system UI (dark icons) if all apps is behind at least half of the
// status bar.
diff --git a/src/com/android/launcher3/states/SpringLoadedState.java b/src/com/android/launcher3/states/SpringLoadedState.java
index 35f7f8831..d49dfbb8f 100644
--- a/src/com/android/launcher3/states/SpringLoadedState.java
+++ b/src/com/android/launcher3/states/SpringLoadedState.java
@@ -73,6 +73,11 @@ public class SpringLoadedState extends LauncherState {
}
@Override
+ public boolean scaleHotseatWithWorkspace() {
+ return false;
+ }
+
+ @Override
public void onStateEnabled(Launcher launcher) {
Workspace ws = launcher.getWorkspace();
ws.showPageIndicatorAtCurrentScroll();