Loading res/layout/launcher.xml +9 −9 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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> src/com/android/launcher3/LauncherState.java +7 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,13 @@ public class LauncherState { return new float[] {1, 0, 0}; } /** * @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 Loading src/com/android/launcher3/LauncherStateManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } } Loading src/com/android/launcher3/WorkspaceStateTransitionAnimation.java +21 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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); } Loading @@ -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(); Loading src/com/android/launcher3/allapps/AllAppsTransitionController.java +0 −6 Original line number Diff line number Diff line Loading @@ -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. Loading Loading
res/layout/launcher.xml +9 −9 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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>
src/com/android/launcher3/LauncherState.java +7 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,13 @@ public class LauncherState { return new float[] {1, 0, 0}; } /** * @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 Loading
src/com/android/launcher3/LauncherStateManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } } Loading
src/com/android/launcher3/WorkspaceStateTransitionAnimation.java +21 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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); } Loading @@ -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(); Loading
src/com/android/launcher3/allapps/AllAppsTransitionController.java +0 −6 Original line number Diff line number Diff line Loading @@ -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. Loading