Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4bb4b89b authored by Tony's avatar Tony
Browse files

Scale and translate hotseat with workspace instead of all apps

- Move the hotseat alongside workspace instead of on top of all apps in xml layout
- Set pivot point of hotseat to match the workspace's, and apply the same scale
- Translate the hotseat with the workspace instead of all apps
- SpringLoadedState does not scale or translate the hotseat

Change-Id: Ic45fe99f83f0e0012afa78073d9577e65da444e2
parent 9db9d62b
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -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>
+7 −0
Original line number Diff line number Diff line
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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);
            }
        }
    }
+21 −3
Original line number Diff line number Diff line
@@ -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();
+0 −6
Original line number Diff line number Diff line
@@ -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