Merge "Update overview actions alignment" into tm-dev am: a80efcee9f

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/17888303

Change-Id: Ibaa9c19e18f693c1a6552f622ef13218dbe2a4e8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Alex Chau
2022-04-27 12:46:11 +00:00
committed by Automerger Merge Worker
11 changed files with 115 additions and 101 deletions
+1 -2
View File
@@ -15,8 +15,7 @@
*/ */
--> -->
<resources> <resources>
<dimen name="overview_actions_top_margin_gesture">19.1dp</dimen> <dimen name="overview_actions_top_margin">12dp</dimen>
<dimen name="overview_actions_bottom_margin_gesture">10dp</dimen>
<dimen name="overview_grid_side_margin">52dp</dimen> <dimen name="overview_grid_side_margin">52dp</dimen>
<dimen name="overview_page_spacing">38dp</dimen> <dimen name="overview_page_spacing">38dp</dimen>
</resources> </resources>
-2
View File
@@ -20,8 +20,6 @@
<dimen name="overview_task_margin">12dp</dimen> <dimen name="overview_task_margin">12dp</dimen>
<dimen name="overview_task_margin_grid">4dp</dimen> <dimen name="overview_task_margin_grid">4dp</dimen>
<dimen name="overview_actions_button_spacing">36dp</dimen> <dimen name="overview_actions_button_spacing">36dp</dimen>
<dimen name="overview_actions_top_margin_gesture">19.37dp</dimen>
<dimen name="overview_actions_bottom_margin_gesture">22dp</dimen>
<dimen name="overview_grid_side_margin">60dp</dimen> <dimen name="overview_grid_side_margin">60dp</dimen>
<dimen name="overview_grid_row_spacing">36dp</dimen> <dimen name="overview_grid_row_spacing">36dp</dimen>
<dimen name="overview_page_spacing">36dp</dimen> <dimen name="overview_page_spacing">36dp</dimen>
+2 -3
View File
@@ -35,13 +35,12 @@
<dimen name="overview_task_margin">16dp</dimen> <dimen name="overview_task_margin">16dp</dimen>
<dimen name="overview_task_margin_grid">0dp</dimen> <dimen name="overview_task_margin_grid">0dp</dimen>
<item name="overview_max_scale" format="float" type="dimen">0.7</item> <item name="overview_max_scale" format="float" type="dimen">0.7</item>
<item name="overview_modal_max_scale" format="float" type="dimen">1.1</item>
<!-- Overrideable in overlay that provides the Overview Actions. --> <!-- Overrideable in overlay that provides the Overview Actions. -->
<dimen name="overview_actions_height">48dp</dimen> <dimen name="overview_actions_height">48dp</dimen>
<dimen name="overview_actions_button_spacing">32dp</dimen> <dimen name="overview_actions_button_spacing">32dp</dimen>
<dimen name="overview_actions_top_margin_gesture">28dp</dimen> <dimen name="overview_actions_top_margin">24dp</dimen>
<dimen name="overview_actions_bottom_margin_gesture">28dp</dimen>
<dimen name="overview_actions_margin_three_button">8dp</dimen>
<dimen name="overview_actions_horizontal_margin">16dp</dimen> <dimen name="overview_actions_horizontal_margin">16dp</dimen>
<dimen name="overview_page_spacing">16dp</dimen> <dimen name="overview_page_spacing">16dp</dimen>
@@ -296,7 +296,7 @@ public abstract class BaseQuickstepLauncher extends Launcher {
new SplitSelectStateController(this, mHandler, getStateManager(), new SplitSelectStateController(this, mHandler, getStateManager(),
getDepthController()); getDepthController());
overviewPanel.init(mActionsView, controller); overviewPanel.init(mActionsView, controller);
mActionsView.setDp(getDeviceProfile()); mActionsView.updateDimension(getDeviceProfile(), overviewPanel.getLastComputedTaskSize());
mActionsView.updateVerticalMargin(DisplayController.getNavigationMode(this)); mActionsView.updateVerticalMargin(DisplayController.getNavigationMode(this));
mAppTransitionManager = new QuickstepTransitionManager(this); mAppTransitionManager = new QuickstepTransitionManager(this);
@@ -19,7 +19,6 @@ import static com.android.launcher3.LauncherAnimUtils.VIEW_BACKGROUND_COLOR;
import static com.android.launcher3.anim.Interpolators.ACCEL_2; import static com.android.launcher3.anim.Interpolators.ACCEL_2;
import static com.android.launcher3.anim.Interpolators.INSTANT; import static com.android.launcher3.anim.Interpolators.INSTANT;
import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.util.DisplayController.getNavigationMode;
import static com.android.quickstep.AbsSwipeUpHandler.RECENTS_ATTACH_DURATION; import static com.android.quickstep.AbsSwipeUpHandler.RECENTS_ATTACH_DURATION;
import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS; import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS;
import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM;
@@ -62,7 +61,6 @@ import com.android.launcher3.views.ScrimView;
import com.android.quickstep.util.ActivityInitListener; import com.android.quickstep.util.ActivityInitListener;
import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.SplitScreenBounds; import com.android.quickstep.util.SplitScreenBounds;
import com.android.quickstep.views.OverviewActionsView;
import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView; import com.android.quickstep.views.TaskView;
import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.recents.model.ThumbnailData;
@@ -224,7 +222,7 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
Resources res = context.getResources(); Resources res = context.getResources();
if (dp.isTablet) { if (dp.isTablet) {
Rect gridRect = new Rect(); Rect gridRect = new Rect();
calculateGridSize(context, dp, gridRect); calculateGridSize(dp, gridRect);
PointF taskDimension = getTaskDimension(context, dp); PointF taskDimension = getTaskDimension(context, dp);
float scale = gridRect.height() / taskDimension.y; float scale = gridRect.height() / taskDimension.y;
@@ -238,15 +236,15 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
int taskMargin = dp.overviewTaskMarginPx; int taskMargin = dp.overviewTaskMarginPx;
calculateTaskSizeInternal(context, dp, calculateTaskSizeInternal(context, dp,
dp.overviewTaskThumbnailTopMarginPx, dp.overviewTaskThumbnailTopMarginPx,
getOverviewActionsHeight(context, dp), dp.getOverviewActionsClaimedSpace(),
res.getDimensionPixelSize(R.dimen.overview_minimum_next_prev_size) + taskMargin, res.getDimensionPixelSize(R.dimen.overview_minimum_next_prev_size) + taskMargin,
Gravity.CENTER,
outRect); outRect);
} }
} }
private void calculateTaskSizeInternal(Context context, DeviceProfile dp, private void calculateTaskSizeInternal(Context context, DeviceProfile dp, int claimedSpaceAbove,
int claimedSpaceAbove, int claimedSpaceBelow, int minimumHorizontalPadding, int claimedSpaceBelow, int minimumHorizontalPadding, int gravity, Rect outRect) {
Rect outRect) {
PointF taskDimension = getTaskDimension(context, dp); PointF taskDimension = getTaskDimension(context, dp);
Rect insets = dp.getInsets(); Rect insets = dp.getInsets();
@@ -264,7 +262,7 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
int outWidth = Math.round(scale * taskDimension.x); int outWidth = Math.round(scale * taskDimension.x);
int outHeight = Math.round(scale * taskDimension.y); int outHeight = Math.round(scale * taskDimension.y);
Gravity.apply(Gravity.CENTER, outWidth, outHeight, potentialTaskRect, outRect); Gravity.apply(gravity, outWidth, outHeight, potentialTaskRect, outRect);
} }
private static PointF getTaskDimension(Context context, DeviceProfile dp) { private static PointF getTaskDimension(Context context, DeviceProfile dp) {
@@ -314,10 +312,10 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
/** /**
* Calculates the overview grid size for the provided device configuration. * Calculates the overview grid size for the provided device configuration.
*/ */
public final void calculateGridSize(Context context, DeviceProfile dp, Rect outRect) { public final void calculateGridSize(DeviceProfile dp, Rect outRect) {
Rect insets = dp.getInsets(); Rect insets = dp.getInsets();
int topMargin = dp.overviewTaskThumbnailTopMarginPx; int topMargin = dp.overviewTaskThumbnailTopMarginPx;
int bottomMargin = getOverviewActionsHeight(context, dp); int bottomMargin = dp.getOverviewActionsClaimedSpace();
int sideMargin = dp.overviewGridSideMargin; int sideMargin = dp.overviewGridSideMargin;
outRect.set(0, 0, dp.widthPx, dp.heightPx); outRect.set(0, 0, dp.widthPx, dp.heightPx);
@@ -352,21 +350,17 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
* Calculates the modal taskView size for the provided device configuration * Calculates the modal taskView size for the provided device configuration
*/ */
public final void calculateModalTaskSize(Context context, DeviceProfile dp, Rect outRect) { public final void calculateModalTaskSize(Context context, DeviceProfile dp, Rect outRect) {
calculateTaskSize(context, dp, outRect);
float maxScale = context.getResources().getFloat(R.dimen.overview_modal_max_scale);
calculateTaskSizeInternal( calculateTaskSizeInternal(
context, dp, context, dp,
dp.overviewTaskMarginPx, dp.overviewTaskMarginPx,
getOverviewActionsHeight(context, dp), dp.heightPx - outRect.bottom - dp.getInsets().bottom,
dp.overviewTaskMarginPx, Math.round((dp.availableWidthPx - outRect.width() * maxScale) / 2),
Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM,
outRect); outRect);
} }
/** Gets the space that the overview actions will take, including bottom margin. */
private int getOverviewActionsHeight(Context context, DeviceProfile dp) {
return OverviewActionsView.getOverviewActionsBottomMarginPx(getNavigationMode(context), dp)
+ OverviewActionsView.getOverviewActionsTopMarginPx(getNavigationMode(context), dp)
+ dp.overviewActionsHeight;
}
/** /**
* Called when the gesture ends and the animation starts towards the given target. Used to add * Called when the gesture ends and the animation starts towards the given target. Used to add
* an optional additional animation with the same duration. * an optional additional animation with the same duration.
@@ -221,6 +221,9 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsSta
setOverviewStateEnabled(true); setOverviewStateEnabled(true);
setOverviewGridEnabled(toState.displayOverviewTasksAsGrid(mActivity.getDeviceProfile())); setOverviewGridEnabled(toState.displayOverviewTasksAsGrid(mActivity.getDeviceProfile()));
setOverviewFullscreenEnabled(toState.isFullScreen()); setOverviewFullscreenEnabled(toState.isFullScreen());
if (toState == MODAL_TASK) {
setOverviewSelectEnabled(true);
}
Log.d(BAD_STATE, "FRV onStateTransitionStart setFreezeVisibility=true, toState=" + toState); Log.d(BAD_STATE, "FRV onStateTransitionStart setFreezeVisibility=true, toState=" + toState);
setFreezeViewVisibility(true); setFreezeViewVisibility(true);
} }
@@ -236,6 +239,9 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsSta
Log.d(BAD_STATE, "FRV onStateTransitionComplete setFreezeVisibility=false, finalState=" Log.d(BAD_STATE, "FRV onStateTransitionComplete setFreezeVisibility=false, finalState="
+ finalState); + finalState);
setFreezeViewVisibility(false); setFreezeViewVisibility(false);
if (finalState != MODAL_TASK) {
setOverviewSelectEnabled(false);
}
if (isOverlayEnabled) { if (isOverlayEnabled) {
runActionOnRemoteHandles(remoteTargetHandle -> runActionOnRemoteHandles(remoteTargetHandle ->
@@ -100,6 +100,9 @@ public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher, Laun
setOverviewStateEnabled(toState.overviewUi); setOverviewStateEnabled(toState.overviewUi);
setOverviewGridEnabled(toState.displayOverviewTasksAsGrid(mActivity.getDeviceProfile())); setOverviewGridEnabled(toState.displayOverviewTasksAsGrid(mActivity.getDeviceProfile()));
setOverviewFullscreenEnabled(toState.getOverviewFullscreenProgress() == 1); setOverviewFullscreenEnabled(toState.getOverviewFullscreenProgress() == 1);
if (toState == OVERVIEW_MODAL_TASK) {
setOverviewSelectEnabled(true);
}
Log.d(BAD_STATE, "LRV onStateTransitionStart setFreezeVisibility=true, toState=" + toState); Log.d(BAD_STATE, "LRV onStateTransitionStart setFreezeVisibility=true, toState=" + toState);
setFreezeViewVisibility(true); setFreezeViewVisibility(true);
} }
@@ -115,6 +118,9 @@ public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher, Laun
Log.d(BAD_STATE, "LRV onStateTransitionComplete setFreezeVisibility=false, finalState=" Log.d(BAD_STATE, "LRV onStateTransitionComplete setFreezeVisibility=false, finalState="
+ finalState); + finalState);
setFreezeViewVisibility(false); setFreezeViewVisibility(false);
if (finalState != OVERVIEW_MODAL_TASK) {
setOverviewSelectEnabled(false);
}
if (isOverlayEnabled) { if (isOverlayEnabled) {
runActionOnRemoteHandles(remoteTargetHandle -> runActionOnRemoteHandles(remoteTargetHandle ->
@@ -16,8 +16,6 @@
package com.android.quickstep.views; package com.android.quickstep.views;
import static com.android.launcher3.util.DisplayController.NavigationMode.THREE_BUTTONS;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Rect; import android.graphics.Rect;
@@ -99,6 +97,7 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
@Nullable @Nullable
protected DeviceProfile mDp; protected DeviceProfile mDp;
private final Rect mTaskSize = new Rect();
public OverviewActionsView(Context context) { public OverviewActionsView(Context context) {
this(context, null); this(context, null);
@@ -202,8 +201,10 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
* Offsets OverviewActionsView horizontal position based on 3 button nav container in taskbar. * Offsets OverviewActionsView horizontal position based on 3 button nav container in taskbar.
*/ */
private void updatePadding() { private void updatePadding() {
boolean alignFor3ButtonTaskbar = mDp.isTaskbarPresent && if (mDp == null) {
DisplayController.getNavigationMode(getContext()) == THREE_BUTTONS; return;
}
boolean alignFor3ButtonTaskbar = mDp.isTaskbarPresent && !mDp.isGestureMode;
if (alignFor3ButtonTaskbar) { if (alignFor3ButtonTaskbar) {
// Add extra horizontal spacing // Add extra horizontal spacing
int additionalPadding = ApiWrapper.getHotseatEndOffset(getContext()); int additionalPadding = ApiWrapper.getHotseatEndOffset(getContext());
@@ -225,15 +226,34 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
LayoutParams actionParams = (LayoutParams) findViewById( LayoutParams actionParams = (LayoutParams) findViewById(
R.id.action_buttons).getLayoutParams(); R.id.action_buttons).getLayoutParams();
actionParams.setMargins( actionParams.setMargins(
actionParams.leftMargin, getOverviewActionsTopMarginPx(mode, mDp), actionParams.leftMargin, mDp.overviewActionsTopMarginPx,
actionParams.rightMargin, getOverviewActionsBottomMarginPx(mode, mDp)); actionParams.rightMargin, getBottomMargin());
}
private int getBottomMargin() {
if (mDp == null) {
return 0;
}
if (mDp.isVerticalBarLayout()) {
return mDp.getInsets().bottom;
}
if (!mDp.isGestureMode && mDp.isTaskbarPresent) {
return mDp.getOverviewActionsClaimedSpaceBelow();
}
// Align to bottom of task Rect.
return mDp.heightPx - mTaskSize.bottom - mDp.overviewActionsTopMarginPx
- mDp.overviewActionsHeight;
} }
/** /**
* Set the device profile for this view to draw with. * Updates device profile and task size for this view to draw with.
*/ */
public void setDp(DeviceProfile dp) { public void updateDimension(DeviceProfile dp, Rect taskSize) {
mDp = dp; mDp = dp;
mTaskSize.set(taskSize);
updateVerticalMargin(DisplayController.getNavigationMode(getContext())); updateVerticalMargin(DisplayController.getNavigationMode(getContext()));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
@@ -257,45 +277,4 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
mSplitButton.setVisibility(visible ? VISIBLE : GONE); mSplitButton.setVisibility(visible ? VISIBLE : GONE);
findViewById(R.id.action_split_space).setVisibility(visible ? VISIBLE : GONE); findViewById(R.id.action_split_space).setVisibility(visible ? VISIBLE : GONE);
} }
/** Get the top margin associated with the action buttons in Overview. */
public static int getOverviewActionsTopMarginPx(NavigationMode mode, DeviceProfile dp) {
// In vertical bar, use the smaller task margin for the top regardless of mode
if (dp.isVerticalBarLayout()) {
return dp.overviewTaskMarginPx;
}
if (mode == NavigationMode.THREE_BUTTONS) {
return dp.overviewActionsMarginThreeButtonPx;
}
return dp.overviewActionsTopMarginGesturePx;
}
/** Get the bottom margin associated with the action buttons in Overview. */
public static int getOverviewActionsBottomMarginPx(NavigationMode mode, DeviceProfile dp) {
int bottomInset = dp.getInsets().bottom;
if (dp.isVerticalBarLayout()) {
return bottomInset;
}
if (mode == NavigationMode.THREE_BUTTONS) {
int bottomMargin = dp.overviewActionsMarginThreeButtonPx + bottomInset;
if (dp.isTaskbarPresent) {
// Align vertically, using taskbar height + mDp.taskbarOffsetY() to estimate where
// the button nav top is.
int actionsTop = (dp.heightPx - bottomMargin - bottomInset)
- dp.overviewActionsHeight;
int navTop = dp.heightPx - (dp.taskbarSize + dp.getTaskbarOffsetY());
bottomMargin -=
navTop - actionsTop + ((dp.taskbarSize - dp.overviewActionsHeight) / 2);
}
return bottomMargin;
}
// There is no bottom inset when taskbar is present, use stashed taskbar as padding instead.
return dp.overviewActionsBottomMarginGesturePx
+ (dp.isTaskbarPresent ? dp.stashedTaskbarSize : bottomInset);
}
} }
@@ -455,6 +455,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
protected boolean mFreezeViewVisibility; protected boolean mFreezeViewVisibility;
private boolean mOverviewGridEnabled; private boolean mOverviewGridEnabled;
private boolean mOverviewFullscreenEnabled; private boolean mOverviewFullscreenEnabled;
private boolean mOverviewSelectEnabled;
private float mAdjacentPageHorizontalOffset = 0; private float mAdjacentPageHorizontalOffset = 0;
protected float mTaskViewsSecondaryTranslation = 0; protected float mTaskViewsSecondaryTranslation = 0;
@@ -1637,11 +1638,11 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
// Propagate DeviceProfile change event. // Propagate DeviceProfile change event.
runActionOnRemoteHandles( runActionOnRemoteHandles(
remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator().setDp(dp)); remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator().setDp(dp));
mActionsView.setDp(dp);
mOrientationState.setDeviceProfile(dp); mOrientationState.setDeviceProfile(dp);
// Update RecentsView and TaskView's DeviceProfile dependent layout. // Update RecentsView and TaskView's DeviceProfile dependent layout.
updateOrientationHandler(); updateOrientationHandler();
mActionsView.updateDimension(dp, mLastComputedTaskSize);
} }
private void updateOrientationHandler() { private void updateOrientationHandler() {
@@ -1706,7 +1707,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
dp.widthPx - mInsets.right - mTempRect.right, dp.widthPx - mInsets.right - mTempRect.right,
dp.heightPx - mInsets.bottom - mTempRect.bottom); dp.heightPx - mInsets.bottom - mTempRect.bottom);
mSizeStrategy.calculateGridSize(mActivity, mActivity.getDeviceProfile(), mSizeStrategy.calculateGridSize(mActivity.getDeviceProfile(),
mLastComputedGridSize); mLastComputedGridSize);
mSizeStrategy.calculateGridTaskSize(mActivity, mActivity.getDeviceProfile(), mSizeStrategy.calculateGridTaskSize(mActivity, mActivity.getDeviceProfile(),
mLastComputedGridTaskSize, mOrientationHandler); mLastComputedGridTaskSize, mOrientationHandler);
@@ -1764,7 +1765,8 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
* Returns the size of task selected to enter modal state. * Returns the size of task selected to enter modal state.
*/ */
public Point getSelectedTaskSize() { public Point getSelectedTaskSize() {
mSizeStrategy.calculateTaskSize(mActivity, mActivity.getDeviceProfile(), mTempRect); mSizeStrategy.calculateTaskSize(mActivity, mActivity.getDeviceProfile(),
mTempRect);
return new Point(mTempRect.width(), mTempRect.height()); return new Point(mTempRect.width(), mTempRect.height());
} }
@@ -3689,10 +3691,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
// Update the pivots such that when the task is scaled, it fills the full page // Update the pivots such that when the task is scaled, it fills the full page
getTaskSize(mTempRect); getTaskSize(mTempRect);
getPagedViewOrientedState().getFullScreenScaleAndPivot(mTempRect, updatePivots();
mActivity.getDeviceProfile(), mTempPointF);
setPivotX(mTempPointF.x);
setPivotY(mTempPointF.y);
setTaskModalness(mTaskModalness); setTaskModalness(mTaskModalness);
mLastComputedTaskStartPushOutDistance = null; mLastComputedTaskStartPushOutDistance = null;
mLastComputedTaskEndPushOutDistance = null; mLastComputedTaskEndPushOutDistance = null;
@@ -3704,6 +3703,18 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
: IMPORTANT_FOR_ACCESSIBILITY_AUTO); : IMPORTANT_FOR_ACCESSIBILITY_AUTO);
} }
private void updatePivots() {
if (mOverviewSelectEnabled) {
setPivotX(mLastComputedTaskSize.centerX());
setPivotY(mLastComputedTaskSize.bottom);
} else {
getPagedViewOrientedState().getFullScreenScaleAndPivot(mTempRect,
mActivity.getDeviceProfile(), mTempPointF);
setPivotX(mTempPointF.x);
setPivotY(mTempPointF.y);
}
}
private void updatePageOffsets() { private void updatePageOffsets() {
float offset = mAdjacentPageHorizontalOffset; float offset = mAdjacentPageHorizontalOffset;
float modalOffset = ACCEL_0_75.getInterpolation(mTaskModalness); float modalOffset = ACCEL_0_75.getInterpolation(mTaskModalness);
@@ -4844,6 +4855,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
if (mOverlayEnabled != overlayEnabled) { if (mOverlayEnabled != overlayEnabled) {
mOverlayEnabled = overlayEnabled; mOverlayEnabled = overlayEnabled;
updateEnabledOverlays(); updateEnabledOverlays();
updatePivots();
} }
} }
@@ -4865,6 +4877,17 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
} }
} }
/**
* Update whether RecentsView is in select mode. Should be enabled before transitioning to
* select mode, and only disabled after transitioning from select mode.
*/
public void setOverviewSelectEnabled(boolean overviewSelectEnabled) {
if (mOverviewSelectEnabled != overviewSelectEnabled) {
mOverviewSelectEnabled = overviewSelectEnabled;
updatePivots();
}
}
/** /**
* Switch the current running task view to static snapshot mode, * Switch the current running task view to static snapshot mode,
* capturing the snapshot at the same time. * capturing the snapshot at the same time.
+1 -3
View File
@@ -368,9 +368,7 @@
<dimen name="overview_actions_height">0dp</dimen> <dimen name="overview_actions_height">0dp</dimen>
<dimen name="overview_actions_button_spacing">0dp</dimen> <dimen name="overview_actions_button_spacing">0dp</dimen>
<dimen name="overview_actions_margin_gesture">0dp</dimen> <dimen name="overview_actions_margin_gesture">0dp</dimen>
<dimen name="overview_actions_top_margin_gesture">0dp</dimen> <dimen name="overview_actions_top_margin">0dp</dimen>
<dimen name="overview_actions_bottom_margin_gesture">0dp</dimen>
<dimen name="overview_actions_margin_three_button">0dp</dimen>
<dimen name="overview_grid_side_margin">0dp</dimen> <dimen name="overview_grid_side_margin">0dp</dimen>
<dimen name="overview_grid_row_spacing">0dp</dimen> <dimen name="overview_grid_row_spacing">0dp</dimen>
<dimen name="overview_page_spacing">0dp</dimen> <dimen name="overview_page_spacing">0dp</dimen>
+27 -15
View File
@@ -195,9 +195,7 @@ public class DeviceProfile {
public int overviewTaskIconDrawableSizeGridPx; public int overviewTaskIconDrawableSizeGridPx;
public int overviewTaskThumbnailTopMarginPx; public int overviewTaskThumbnailTopMarginPx;
public final int overviewActionsHeight; public final int overviewActionsHeight;
public final int overviewActionsMarginThreeButtonPx; public final int overviewActionsTopMarginPx;
public final int overviewActionsTopMarginGesturePx;
public final int overviewActionsBottomMarginGesturePx;
public final int overviewActionsButtonSpacing; public final int overviewActionsButtonSpacing;
public int overviewPageSpacing; public int overviewPageSpacing;
public int overviewRowSpacing; public int overviewRowSpacing;
@@ -408,16 +406,14 @@ public class DeviceProfile {
overviewTaskIconDrawableSizeGridPx = overviewTaskIconDrawableSizeGridPx =
res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_drawable_size_grid); res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_drawable_size_grid);
overviewTaskThumbnailTopMarginPx = overviewTaskIconSizePx + overviewTaskMarginPx * 2; overviewTaskThumbnailTopMarginPx = overviewTaskIconSizePx + overviewTaskMarginPx * 2;
overviewActionsTopMarginGesturePx = res.getDimensionPixelSize( // In vertical bar, use the smaller task margin for the top regardless of mode.
R.dimen.overview_actions_top_margin_gesture); overviewActionsTopMarginPx = isVerticalBarLayout()
overviewActionsBottomMarginGesturePx = res.getDimensionPixelSize( ? overviewTaskMarginPx
R.dimen.overview_actions_bottom_margin_gesture); : res.getDimensionPixelSize(R.dimen.overview_actions_top_margin);
overviewPageSpacing = res.getDimensionPixelSize(R.dimen.overview_page_spacing); overviewPageSpacing = res.getDimensionPixelSize(R.dimen.overview_page_spacing);
overviewActionsButtonSpacing = res.getDimensionPixelSize( overviewActionsButtonSpacing = res.getDimensionPixelSize(
R.dimen.overview_actions_button_spacing); R.dimen.overview_actions_button_spacing);
overviewActionsHeight = res.getDimensionPixelSize(R.dimen.overview_actions_height); overviewActionsHeight = res.getDimensionPixelSize(R.dimen.overview_actions_height);
overviewActionsMarginThreeButtonPx = res.getDimensionPixelSize(
R.dimen.overview_actions_margin_three_button);
// Grid task's top margin is only overviewTaskIconSizePx + overviewTaskMarginGridPx, but // Grid task's top margin is only overviewTaskIconSizePx + overviewTaskMarginGridPx, but
// overviewTaskThumbnailTopMarginPx is applied to all TaskThumbnailView, so exclude the // overviewTaskThumbnailTopMarginPx is applied to all TaskThumbnailView, so exclude the
// extra margin when calculating row spacing. // extra margin when calculating row spacing.
@@ -1103,6 +1099,24 @@ public class DeviceProfile {
} }
} }
/**
* Returns the number of pixels required below OverviewActions excluding insets.
*/
public int getOverviewActionsClaimedSpaceBelow() {
if (isTaskbarPresent && !isGestureMode) {
// Align vertically to where nav buttons are.
return ((taskbarSize - overviewActionsHeight) / 2) + getTaskbarOffsetY();
}
return 0;
}
/** Gets the space that the overview actions will take, including bottom margin. */
public int getOverviewActionsClaimedSpace() {
return overviewActionsTopMarginPx + overviewActionsHeight
+ getOverviewActionsClaimedSpaceBelow();
}
/** /**
* @return the bounds for which the open folders should be contained within * @return the bounds for which the open folders should be contained within
*/ */
@@ -1323,12 +1337,10 @@ public class DeviceProfile {
overviewTaskIconDrawableSizeGridPx)); overviewTaskIconDrawableSizeGridPx));
writer.println(prefix + pxToDpStr("overviewTaskThumbnailTopMarginPx", writer.println(prefix + pxToDpStr("overviewTaskThumbnailTopMarginPx",
overviewTaskThumbnailTopMarginPx)); overviewTaskThumbnailTopMarginPx));
writer.println(prefix + pxToDpStr("overviewActionsMarginThreeButtonPx", writer.println(prefix + pxToDpStr("overviewActionsTopMarginPx",
overviewActionsMarginThreeButtonPx)); overviewActionsTopMarginPx));
writer.println(prefix + pxToDpStr("overviewActionsTopMarginGesturePx", writer.println(prefix + pxToDpStr("overviewActionsHeight",
overviewActionsTopMarginGesturePx)); overviewActionsHeight));
writer.println(prefix + pxToDpStr("overviewActionsBottomMarginGesturePx",
overviewActionsBottomMarginGesturePx));
writer.println(prefix + pxToDpStr("overviewActionsButtonSpacing", writer.println(prefix + pxToDpStr("overviewActionsButtonSpacing",
overviewActionsButtonSpacing)); overviewActionsButtonSpacing));
writer.println(prefix + pxToDpStr("overviewPageSpacing", overviewPageSpacing)); writer.println(prefix + pxToDpStr("overviewPageSpacing", overviewPageSpacing));