diff --git a/quickstep/res/layout/overview_clear_all_button.xml b/quickstep/res/layout/overview_clear_all_button.xml index 34ff91df9a..c61610a438 100644 --- a/quickstep/res/layout/overview_clear_all_button.xml +++ b/quickstep/res/layout/overview_clear_all_button.xml @@ -22,5 +22,4 @@ android:layout_height="wrap_content" android:text="@string/recents_clear_all" android:textColor="?attr/workspaceTextColor" - android:textSize="14sp" - android:translationY="@dimen/task_thumbnail_half_top_margin" /> \ No newline at end of file + android:textSize="14sp" /> \ No newline at end of file diff --git a/quickstep/res/layout/task.xml b/quickstep/res/layout/task.xml index 0f9a6aad6f..7e5b85c41d 100644 --- a/quickstep/res/layout/task.xml +++ b/quickstep/res/layout/task.xml @@ -13,6 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. --> + + android:layout_height="match_parent"/> 24dp + + 8dp \ No newline at end of file diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml index 755bce8612..0ff11c5f5e 100644 --- a/quickstep/res/values/dimens.xml +++ b/quickstep/res/values/dimens.xml @@ -15,11 +15,7 @@ --> - - 80dp - 40dp 48dp - 16dp 2dp diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java index 5942b3aaf4..462630cac3 100644 --- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java +++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java @@ -201,14 +201,18 @@ public abstract class BaseActivityInterface 0 ? endTranslation : 0; } + + /** + * Get the Y translation that is set in the original layout position, before scrolling. + */ + private float getOriginalTranslationY() { + return mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx / 2.0f; + } } diff --git a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java index 1241982040..6fcd54cf62 100644 --- a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java +++ b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java @@ -29,6 +29,7 @@ import android.widget.FrameLayout; import androidx.annotation.IntDef; import androidx.annotation.Nullable; +import com.android.launcher3.DeviceProfile; import com.android.launcher3.Insettable; import com.android.launcher3.R; import com.android.launcher3.util.MultiValueAlpha; @@ -144,6 +145,7 @@ public class OverviewActionsView extends FrameLayo public void setInsets(Rect insets) { mInsets.set(insets); updateVerticalMargin(SysUINavigationMode.getMode(getContext())); + updateHorizontalPadding(); } public void updateHiddenFlags(@ActionsHiddenFlags int visibilityFlags, boolean enable) { @@ -187,6 +189,10 @@ public class OverviewActionsView extends FrameLayo return mMultiValueAlpha.getProperty(INDEX_FULLSCREEN_ALPHA); } + private void updateHorizontalPadding() { + setPadding(mInsets.left, 0, mInsets.right, 0); + } + /** Updates vertical margins for different navigation mode or configuration changes. */ public void updateVerticalMargin(Mode mode) { LayoutParams actionParams = (LayoutParams) findViewById( @@ -196,6 +202,13 @@ public class OverviewActionsView extends FrameLayo getBottomVerticalMargin(mode)); } + /** + * Set the device profile for this view to draw with. + */ + public void setDp(DeviceProfile dp) { + requestLayout(); + } + protected int getBottomVerticalMargin(Mode mode) { int bottomMargin; int orientation = getResources().getConfiguration().orientation; diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 4d8176c7e5..d637bb4aca 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -310,7 +310,6 @@ public abstract class RecentsView extends PagedView protected final T mActivity; private final float mFastFlingVelocity; private final RecentsModel mModel; - private final int mTaskTopMargin; private final int mRowSpacing; private final ClearAllButton mClearAllButton; private final Rect mClearAllButtonDeadZoneRect = new Rect(); @@ -529,8 +528,6 @@ public abstract class RecentsView extends PagedView mIsRtl = mOrientationHandler.getRecentsRtlSetting(getResources()); setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR); - mTaskTopMargin = getResources() - .getDimensionPixelSize(R.dimen.task_thumbnail_top_margin); mRowSpacing = getResources().getDimensionPixelSize(R.dimen.overview_grid_row_spacing); mSquaredTouchSlop = squaredTouchSlop(context); @@ -1066,7 +1063,9 @@ public abstract class RecentsView extends PagedView public void setInsets(Rect insets) { mInsets.set(insets); resetPaddingFromTaskSize(); - mLiveTileTaskViewSimulator.setDp(mActivity.getDeviceProfile()); + DeviceProfile dp = mActivity.getDeviceProfile(); + mLiveTileTaskViewSimulator.setDp(dp); + mActionsView.setDp(dp); } private void resetPaddingFromTaskSize() { @@ -1075,7 +1074,7 @@ public abstract class RecentsView extends PagedView mTaskWidth = mTempRect.width(); mTaskHeight = mTempRect.height(); - mTempRect.top -= mTaskTopMargin; + mTempRect.top -= dp.overviewTaskThumbnailTopMarginPx; setPadding(mTempRect.left - mInsets.left, mTempRect.top - mInsets.top, dp.widthPx - mInsets.right - mTempRect.right, dp.heightPx - mInsets.bottom - mTempRect.bottom); @@ -1602,7 +1601,8 @@ public abstract class RecentsView extends PagedView final int boxLength = Math.max(mTaskWidth, mTaskHeight); float availableHeight = mLastComputedGridSize.height(); float rowHeight = (availableHeight - mRowSpacing) / 2; - float gridScale = rowHeight / (boxLength + mTaskTopMargin); + int taskTopMargin = mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx; + float gridScale = rowHeight / (boxLength + taskTopMargin); int topRowWidth = 0; int bottomRowWidth = 0; @@ -1635,7 +1635,7 @@ public abstract class RecentsView extends PagedView gridTranslations[i] -= taskGridHorizontalDiff; taskView.setGridOffsetTranslationX(taskGridHorizontalDiff); - float taskGridVerticalDiff = mLastComputedGridSize.top + mTaskTopMargin * gridScale + float taskGridVerticalDiff = mLastComputedGridSize.top + taskTopMargin * gridScale - mLastComputedTaskSize.top; // Off-set gap due to task scaling. @@ -1669,7 +1669,7 @@ public abstract class RecentsView extends PagedView bottomSet.add(i); // Move into bottom row. - float heightOffset = (boxLength + mTaskTopMargin) * gridScale + mRowSpacing; + float heightOffset = (boxLength + taskTopMargin) * gridScale + mRowSpacing; taskView.setGridTranslationY(heightOffset + taskGridVerticalDiff); // Move horizontally into empty space. @@ -2485,7 +2485,7 @@ public abstract class RecentsView extends PagedView if (child == mSplitHiddenTaskView) { int left = newScroll[i] + getPaddingStart(); - int topMargin = mSplitHiddenTaskView.getThumbnailTopMargin(); + int topMargin = mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx; int top = -mSplitHiddenTaskView.getHeight() - locationOnScreen[1]; mSplitHiddenTaskView.layout(left, top, left + mSplitHiddenTaskView.getWidth(), diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuView.java b/quickstep/src/com/android/quickstep/views/TaskMenuView.java index a5b7a5b575..a46daf38fd 100644 --- a/quickstep/src/com/android/quickstep/views/TaskMenuView.java +++ b/quickstep/src/com/android/quickstep/views/TaskMenuView.java @@ -58,7 +58,6 @@ public class TaskMenuView extends AbstractFloatingView { private static final int REVEAL_OPEN_DURATION = 150; private static final int REVEAL_CLOSE_DURATION = 100; - private final float mThumbnailTopMargin; private BaseDraggingActivity mActivity; private TextView mTaskName; private AnimatorSet mOpenCloseAnimator; @@ -73,7 +72,6 @@ public class TaskMenuView extends AbstractFloatingView { super(context, attrs, defStyleAttr); mActivity = BaseDraggingActivity.fromContext(context); - mThumbnailTopMargin = getResources().getDimension(R.dimen.task_thumbnail_top_margin); setClipToOutline(true); } @@ -123,14 +121,15 @@ public class TaskMenuView extends AbstractFloatingView { } public void setPosition(float x, float y, PagedOrientationHandler pagedOrientationHandler) { - float adjustedY = y + mThumbnailTopMargin; + int taskTopMargin = mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx; + float adjustedY = y + taskTopMargin; // Changing pivot to make computations easier // NOTE: Changing the pivots means the rotated view gets rotated about the new pivots set, // which would render the X and Y position set here incorrect setPivotX(0); if (mActivity.getDeviceProfile().isTablet && FeatureFlags.ENABLE_OVERVIEW_GRID.get()) { // In tablet, set pivotY to original position without mThumbnailTopMargin adjustment. - setPivotY(-mThumbnailTopMargin); + setPivotY(-taskTopMargin); } else { setPivotY(0); } diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index a2acab880f..be044e7c48 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -376,7 +376,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { mCurrentFullscreenParams = new FullscreenDrawParams(context); mDigitalWellBeingToast = new DigitalWellBeingToast(mActivity, this); - mOutlineProvider = new TaskOutlineProvider(getContext(), mCurrentFullscreenParams); + mOutlineProvider = new TaskOutlineProvider(getContext(), mCurrentFullscreenParams, + mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx); setOutlineProvider(mOutlineProvider); } @@ -673,16 +674,12 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { } } - public int getThumbnailTopMargin() { - return (int) getResources().getDimension(R.dimen.task_thumbnail_top_margin); - } - public void setOrientationState(RecentsOrientedState orientationState) { PagedOrientationHandler orientationHandler = orientationState.getOrientationHandler(); boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL; LayoutParams snapshotParams = (LayoutParams) mSnapshotView.getLayoutParams(); - int thumbnailPadding = (int) getResources().getDimension(R.dimen.task_thumbnail_top_margin); - int taskIconMargin = (int) getResources().getDimension(R.dimen.task_icon_top_margin); + snapshotParams.topMargin = mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx; + int taskIconMargin = mActivity.getDeviceProfile().overviewTaskMarginPx; int taskIconHeight = (int) getResources().getDimension(R.dimen.task_thumbnail_icon_size); LayoutParams iconParams = (LayoutParams) mIconView.getLayoutParams(); switch (orientationHandler.getRotation()) { @@ -694,7 +691,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { break; case ROTATION_180: iconParams.gravity = BOTTOM | CENTER_HORIZONTAL; - iconParams.bottomMargin = -thumbnailPadding; + iconParams.bottomMargin = -snapshotParams.topMargin; iconParams.leftMargin = iconParams.rightMargin = 0; iconParams.topMargin = taskIconMargin; break; @@ -711,6 +708,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { iconParams.topMargin = taskIconMargin; break; } + mSnapshotView.setLayoutParams(snapshotParams); mIconView.setLayoutParams(iconParams); mIconView.setRotation(orientationHandler.getDegreesRotated()); @@ -1083,17 +1081,17 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { private static final class TaskOutlineProvider extends ViewOutlineProvider { - private final int mMarginTop; + private int mMarginTop; private FullscreenDrawParams mFullscreenParams; - TaskOutlineProvider(Context context, FullscreenDrawParams fullscreenParams) { - mMarginTop = context.getResources().getDimensionPixelSize( - R.dimen.task_thumbnail_top_margin); + TaskOutlineProvider(Context context, FullscreenDrawParams fullscreenParams, int topMargin) { + mMarginTop = topMargin; mFullscreenParams = fullscreenParams; } - public void setFullscreenParams(FullscreenDrawParams params) { + public void updateParams(FullscreenDrawParams params, int topMargin) { mFullscreenParams = params; + mMarginTop = topMargin; } @Override @@ -1216,7 +1214,9 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { } thumbnail.setFullscreenParams(mCurrentFullscreenParams); - mOutlineProvider.setFullscreenParams(mCurrentFullscreenParams); + mOutlineProvider.updateParams( + mCurrentFullscreenParams, + mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx); invalidateOutline(); } @@ -1238,8 +1238,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { void updateTaskSize() { ViewGroup.LayoutParams params = getLayoutParams(); if (mActivity.getDeviceProfile().isTablet && FeatureFlags.ENABLE_OVERVIEW_GRID.get()) { - final int thumbnailPadding = (int) getResources().getDimension( - R.dimen.task_thumbnail_top_margin); + final int thumbnailPadding = + mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx; Rect lastComputedTaskSize = getRecentsView().getLastComputedTaskSize(); int taskWidth = lastComputedTaskSize.width(); diff --git a/res/values/dimens.xml b/res/values/dimens.xml index cf830c7ed4..d54e3a142c 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -286,4 +286,8 @@ 16dp + + 0dp + 0dp + diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index fa19ee6918..09f4cde195 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -151,6 +151,10 @@ public class DeviceProfile { public int allAppsIconDrawablePaddingPx; public float allAppsIconTextSizePx; + // Overview + public int overviewTaskThumbnailTopMarginPx; + public int overviewTaskMarginPx; + // Widgets public final PointF appWidgetScale = new PointF(1.0f, 1.0f); @@ -297,6 +301,11 @@ public class DeviceProfile { : (hotseatBarTopPaddingPx + hotseatBarBottomPaddingPx + (isScalableGrid ? 0 : hotseatExtraVerticalSize))); + + overviewTaskMarginPx = res.getDimensionPixelSize(R.dimen.overview_task_margin); + overviewTaskThumbnailTopMarginPx = res.getDimensionPixelSize( + R.dimen.task_thumbnail_icon_size) + 2 * overviewTaskMarginPx; + // Calculate all of the remaining variables. extraSpace = updateAvailableDimensions(res); // Now that we have all of the variables calculated, we can tune certain sizes.