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

Commit 090753ad authored by Zak Cohen's avatar Zak Cohen Committed by Android (Google) Code Review
Browse files

Merge "Update Overview UI to new layout." into sc-dev

parents 7575baad 6066f3dd
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -16,16 +16,22 @@

<resources>

    <dimen name="task_thumbnail_top_margin">24dp</dimen>
    <dimen name="task_thumbnail_half_top_margin">12dp</dimen>
    <dimen name="task_thumbnail_top_margin">80dp</dimen>
    <dimen name="task_thumbnail_half_top_margin">40dp</dimen>
    <dimen name="task_thumbnail_icon_size">48dp</dimen>
    <dimen name="task_icon_top_margin">-16dp</dimen>
    <dimen name="task_icon_top_margin">16dp</dimen>
    <!-- For screens without rounded corners -->
    <dimen name="task_corner_radius_small">2dp</dimen>

    <dimen name="overview_proactive_row_height">48dp</dimen>
    <dimen name="overview_proactive_row_bottom_margin">16dp</dimen>

    <dimen name="overview_minimum_next_prev_size">48dp</dimen>
    <dimen name="overview_task_margin">16dp</dimen>

    <!-- Overrideable in overlay that provides the Overview Actions. -->
    <dimen name="overview_actions_height">66dp</dimen>
    <dimen name="overview_actions_bottom_margin_gesture">16dp</dimen>
    <dimen name="overview_actions_height">48dp</dimen>
    <dimen name="overview_actions_bottom_margin_gesture">12dp</dimen>
    <dimen name="overview_actions_bottom_margin_three_button">8dp</dimen>
    <dimen name="overview_actions_horizontal_margin">16dp</dimen>

@@ -63,10 +69,6 @@
    <dimen name="task_card_menu_option_vertical_padding">8dp</dimen>
    <dimen name="task_card_menu_shadow_height">3dp</dimen>
    <dimen name="task_card_menu_horizontal_padding">0dp</dimen>
    <dimen name="portrait_task_card_horz_space_big_overview">132dp</dimen>
    <dimen name="portrait_modal_task_card_horz_space">60dp</dimen>
    <dimen name="landscape_task_card_horz_space">200dp</dimen>
    <dimen name="multi_window_task_card_horz_space">100dp</dimen>
    <!-- Copied from framework resource:
       docked_stack_divider_thickness - 2 * docked_stack_divider_insets -->
    <dimen name="multi_window_task_divider_size">10dp</dimen>
+45 −57
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.os.Build;
import android.view.Gravity;
import android.view.MotionEvent;

import androidx.annotation.Nullable;
@@ -53,6 +54,7 @@ import com.android.quickstep.util.ActivityInitListener;
import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.SplitScreenBounds;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;

@@ -197,33 +199,23 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
     */
    public final void calculateTaskSize(Context context, DeviceProfile dp, Rect outRect,
            PagedOrientationHandler orientedState) {
        calculateTaskSize(context, dp, getExtraSpace(context, dp, orientedState), outRect);
    }

    protected abstract float getExtraSpace(Context context, DeviceProfile dp,
            PagedOrientationHandler orientedState);

    private void calculateTaskSize(Context context, DeviceProfile dp, float extraVerticalSpace,
            Rect outRect) {
        Resources res = context.getResources();

        final int paddingResId;
        if (dp.isMultiWindowMode) {
            paddingResId = R.dimen.multi_window_task_card_horz_space;
        } else if (dp.isVerticalBarLayout()) {
            paddingResId = R.dimen.landscape_task_card_horz_space;
        } else {
            paddingResId = R.dimen.portrait_task_card_horz_space_big_overview;
        }
        float paddingHorz = res.getDimension(paddingResId);
        float paddingVert = 0;
        int taskMargin = res.getDimensionPixelSize(R.dimen.overview_task_margin);
        int taskIconAndMargin = res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_size)
                + res.getDimensionPixelSize(R.dimen.task_icon_top_margin);
        int proactiveRowAndMargin = res.getDimensionPixelSize(R.dimen.overview_proactive_row_height)
                + res.getDimensionPixelSize(R.dimen.overview_proactive_row_bottom_margin);

        calculateTaskSizeInternal(context, dp, extraVerticalSpace, paddingHorz, paddingVert,
                res.getDimension(R.dimen.task_thumbnail_top_margin), outRect);
        calculateTaskSizeInternal(context, dp,
                taskIconAndMargin + taskMargin,
                proactiveRowAndMargin + getOverviewActionsHeight(context) + taskMargin,
                res.getDimensionPixelSize(R.dimen.overview_minimum_next_prev_size) + taskMargin,
                outRect);
    }

    private void calculateTaskSizeInternal(Context context, DeviceProfile dp,
            float extraVerticalSpace, float paddingHorz, float paddingVert, float topIconMargin,
            int claimedSpaceAbove, int claimedSpaceBelow, int minimumHorizontalPadding,
            Rect outRect) {
        float taskWidth, taskHeight;
        Rect insets = dp.getInsets();
@@ -231,30 +223,29 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
            WindowBounds bounds = SplitScreenBounds.INSTANCE.getSecondaryWindowBounds(context);
            taskWidth = bounds.availableSize.x;
            taskHeight = bounds.availableSize.y;
        } else {
        } else if (TaskView.CLIP_STATUS_AND_NAV_BARS) {
            taskWidth = dp.availableWidthPx;
            taskHeight = dp.availableHeightPx;
        } else {
            taskWidth = dp.widthPx;
            taskHeight = dp.heightPx;
        }

        // Note this should be same as dp.availableWidthPx and dp.availableHeightPx unless
        // we override the insets ourselves.
        int launcherVisibleWidth = dp.widthPx - insets.left - insets.right;
        int launcherVisibleHeight = dp.heightPx - insets.top - insets.bottom;

        float availableHeight = launcherVisibleHeight
                - topIconMargin - extraVerticalSpace - paddingVert;
        float availableWidth = launcherVisibleWidth - paddingHorz;
        Rect potentialTaskRect = new Rect(0, 0, dp.widthPx, dp.heightPx);
        potentialTaskRect.inset(insets.left, insets.top, insets.right, insets.bottom);
        potentialTaskRect.inset(
                minimumHorizontalPadding,
                claimedSpaceAbove,
                minimumHorizontalPadding,
                claimedSpaceBelow);

        float scale = Math.min(availableWidth / taskWidth, availableHeight / taskHeight);
        float outWidth = scale * taskWidth;
        float outHeight = scale * taskHeight;
        float scale = Math.min(
                potentialTaskRect.width() / taskWidth,
                potentialTaskRect.height() / taskHeight);
        int outWidth = Math.round(scale * taskWidth);
        int outHeight = Math.round(scale * taskHeight);

        // Center in the visible space
        float x = insets.left + (launcherVisibleWidth - outWidth) / 2;
        float y = insets.top + Math.max(topIconMargin,
                (launcherVisibleHeight - extraVerticalSpace - outHeight) / 2);
        outRect.set(Math.round(x), Math.round(y),
                Math.round(x) + Math.round(outWidth), Math.round(y) + Math.round(outHeight));
        Gravity.apply(Gravity.CENTER, outWidth, outHeight, potentialTaskRect, outRect);
    }

    /**
@@ -276,22 +267,20 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
     * Calculates the modal taskView size for the provided device configuration
     */
    public final void calculateModalTaskSize(Context context, DeviceProfile dp, Rect outRect) {
        float paddingHorz = context.getResources().getDimension(dp.isMultiWindowMode
                ? R.dimen.multi_window_task_card_horz_space
                : dp.isVerticalBarLayout()
                        ? R.dimen.landscape_task_card_horz_space
                        : R.dimen.portrait_modal_task_card_horz_space);
        float extraVerticalSpace = getOverviewActionsHeight(context);
        float paddingVert = 0;
        float topIconMargin = 0;
        calculateTaskSizeInternal(context, dp, extraVerticalSpace, paddingHorz, paddingVert,
                topIconMargin, outRect);
    }

    /** Gets the space that the overview actions will take, including margins. */
    public final float getOverviewActionsHeight(Context context) {
        Resources res = context.getResources();
        float actionsBottomMargin = 0;
        calculateTaskSizeInternal(
                context, dp,
                res.getDimensionPixelSize(R.dimen.overview_task_margin),
                getOverviewActionsHeight(context)
                        + res.getDimensionPixelSize(R.dimen.overview_task_margin),
                res.getDimensionPixelSize(R.dimen.overview_task_margin),
                outRect);
    }

    /** Gets the space that the overview actions will take, including bottom margin. */
    public final int getOverviewActionsHeight(Context context) {
        Resources res = context.getResources();
        int actionsBottomMargin = 0;
        if (getMode(context) == Mode.THREE_BUTTONS) {
            actionsBottomMargin = res.getDimensionPixelSize(
                    R.dimen.overview_actions_bottom_margin_three_button);
@@ -299,9 +288,8 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
            actionsBottomMargin = res.getDimensionPixelSize(
                    R.dimen.overview_actions_bottom_margin_gesture);
        }
        float overviewActionsHeight = actionsBottomMargin
        return actionsBottomMargin
                + res.getDimensionPixelSize(R.dimen.overview_actions_height);
        return overviewActionsHeight;
    }

    /**
+0 −7
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.view.MotionEvent;
import androidx.annotation.Nullable;

import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.quickstep.fallback.RecentsState;
import com.android.quickstep.util.ActivityInitListener;
@@ -155,10 +154,4 @@ public final class FallbackActivityInterface extends
        }
        activity.<RecentsView>getOverviewPanel().startHome();
    }

    @Override
    protected float getExtraSpace(Context context, DeviceProfile dp,
            PagedOrientationHandler orientationHandler) {
        return context.getResources().getDimensionPixelSize(R.dimen.overview_actions_height);
    }
}
+0 −26
Original line number Diff line number Diff line
@@ -19,13 +19,10 @@ import static com.android.launcher3.LauncherState.BACKGROUND_APP;
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.OVERVIEW;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.quickstep.SysUINavigationMode.getMode;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.util.Log;
import android.view.MotionEvent;

import androidx.annotation.Nullable;
@@ -36,13 +33,11 @@ import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherInitListener;
import com.android.launcher3.LauncherState;
import com.android.launcher3.R;
import com.android.launcher3.anim.PendingAnimation;
import com.android.launcher3.statehandlers.DepthController;
import com.android.launcher3.statehandlers.DepthController.ClampedDepthProperty;
import com.android.launcher3.statemanager.StateManager;
import com.android.launcher3.taskbar.TaskbarController;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.quickstep.GestureState.GestureEndTarget;
import com.android.quickstep.SysUINavigationMode.Mode;
@@ -262,27 +257,6 @@ public final class LauncherActivityInterface extends
        }
    }

    @Override
    protected float getExtraSpace(Context context, DeviceProfile dp,
            PagedOrientationHandler orientationHandler) {
        Resources res = context.getResources();
        //TODO: this needs to account for the swipe gesture height and accessibility
        // UI when shown.
        float actionsBottomMargin = 0;
        if (!dp.isVerticalBarLayout()) {
            if (getMode(context) == Mode.THREE_BUTTONS) {
                actionsBottomMargin = res.getDimensionPixelSize(
                    R.dimen.overview_actions_bottom_margin_three_button);
            } else {
                actionsBottomMargin = res.getDimensionPixelSize(
                    R.dimen.overview_actions_bottom_margin_gesture);
            }
        }
        float actionsHeight = actionsBottomMargin
                + res.getDimensionPixelSize(R.dimen.overview_actions_height);
        return actionsHeight;
    }

    @Override
    void onOverviewServiceBound() {
        final BaseQuickstepLauncher activity = getCreatedActivity();
+9 −4
Original line number Diff line number Diff line
@@ -23,9 +23,9 @@ import static android.view.Surface.ROTATION_180;
import static android.view.Surface.ROTATION_270;
import static android.view.Surface.ROTATION_90;

import static com.android.launcher3.util.SettingsCache.ROTATION_SETTING_URI;
import static com.android.launcher3.states.RotationHelper.ALLOW_ROTATION_PREFERENCE_KEY;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.launcher3.util.SettingsCache.ROTATION_SETTING_URI;

import static java.lang.annotation.RetentionPolicy.SOURCE;

@@ -47,11 +47,12 @@ import com.android.launcher3.DeviceProfile;
import com.android.launcher3.InvariantDeviceProfile;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.util.SettingsCache;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.launcher3.util.SettingsCache;
import com.android.launcher3.util.WindowBounds;
import com.android.quickstep.BaseActivityInterface;
import com.android.quickstep.views.TaskView;

import java.lang.annotation.Retention;
import java.util.function.IntConsumer;
@@ -367,8 +368,12 @@ public final class RecentsOrientedState implements SharedPreferences.OnSharedPre
     */
    public float getFullScreenScaleAndPivot(Rect taskView, DeviceProfile dp, PointF outPivot) {
        Rect insets = dp.getInsets();
        float fullWidth = dp.widthPx - insets.left - insets.right;
        float fullHeight = dp.heightPx - insets.top - insets.bottom;
        float fullWidth = dp.widthPx;
        float fullHeight = dp.heightPx;
        if (TaskView.CLIP_STATUS_AND_NAV_BARS) {
            fullWidth -= insets.left + insets.right;
            fullHeight -= insets.top + insets.bottom;
        }

        if (dp.isMultiWindowMode) {
            WindowBounds bounds = SplitScreenBounds.INSTANCE.getSecondaryWindowBounds(mContext);
Loading