Move BaseActivityInterface task size methods to DeviceProfile.

Fix: 238593212
Test: DeviceProfilePhoneTest.kt
Test: DeviceProfileVerticalBarTest.kt
Test: DeviceProfilePhone3ButtonTest.kt
Test: DeviceProfileVerticalBar3ButtonTest.kt
Test: DeviceProfileTabletLandscapeTest.kt
Test: DeviceProfileTabletPortraitTest.kt
Test: DeviceProfileTabletLandscape3ButtonTest.kt
Test: DeviceProfileTabletPortrait3ButtonTest.kt
Test: DeviceProfileTwoPanelLandscapeTest.kt
Test: DeviceProfileTwoPanelPortraitTest.kt
Test: DeviceProfileTwoPanelLandscape3ButtonTest.kt
Test: DeviceProfileTwoPanelPortrait3ButtonTest.kt
Change-Id: I30324d34ca119a467f530b590949743c2ba7b91a
This commit is contained in:
Pat Manning
2022-07-13 14:02:08 +01:00
parent 68c6b81d2a
commit 4e73e5e352
37 changed files with 1598 additions and 307 deletions
+183 -19
View File
@@ -34,6 +34,7 @@ import android.graphics.Point;
import android.graphics.PointF;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.Surface;
import com.android.launcher3.CellLayout.ContainerType;
@@ -41,6 +42,7 @@ import com.android.launcher3.DevicePaddings.DevicePadding;
import com.android.launcher3.icons.DotRenderer;
import com.android.launcher3.icons.GraphicsUtils;
import com.android.launcher3.icons.IconNormalizer;
import com.android.launcher3.touch.PortraitPagedViewHandler;
import com.android.launcher3.uioverrides.ApiWrapper;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.DisplayController.Info;
@@ -202,6 +204,12 @@ public class DeviceProfile {
public int overviewPageSpacing;
public int overviewRowSpacing;
public int overviewGridSideMargin;
public final Rect overviewGridRect = new Rect();
public final Rect overviewTaskRect = new Rect();
public final float overviewTaskWorkspaceScale;
public final Point overviewGridTaskDimension = new Point();
public final Rect overviewModalTaskRect = new Rect();
public final float overviewModalTaskScale;
// Widgets
public final PointF appWidgetScale = new PointF(1.0f, 1.0f);
@@ -228,6 +236,9 @@ public class DeviceProfile {
public DotRenderer mDotRendererWorkSpace;
public DotRenderer mDotRendererAllApps;
// Tasks
public final PointF taskDimension = new PointF();
// Taskbar
public boolean isTaskbarPresent;
// Whether Taskbar will inset the bottom of apps by taskbarSize.
@@ -481,6 +492,104 @@ public class DeviceProfile {
mDotRendererWorkSpace = new DotRenderer(iconSizePx, dotPath, DEFAULT_DOT_SIZE);
mDotRendererAllApps = iconSizePx == allAppsIconSizePx ? mDotRendererWorkSpace :
new DotRenderer(allAppsIconSizePx, dotPath, DEFAULT_DOT_SIZE);
// Grid and Task size calculations
calculateGridSize();
getTaskDimension();
calculateTaskSize(res);
calculateGridTaskSize();
calculateModalTaskSize(res);
overviewModalTaskScale =
Math.min(overviewModalTaskRect.height() / (float) overviewTaskRect.height(),
overviewModalTaskRect.width() / (float) overviewTaskRect.width());
overviewTaskWorkspaceScale = (float) overviewTaskRect.height() / getCellLayoutHeight();
}
private void calculateGridSize() {
int topMargin = overviewTaskThumbnailTopMarginPx;
int bottomMargin = getOverviewActionsClaimedSpace();
int sideMargin = overviewGridSideMargin;
overviewGridRect.set(0, 0, widthPx, heightPx);
overviewGridRect.inset(Math.max(mInsets.left, sideMargin), mInsets.top + topMargin,
Math.max(mInsets.right, sideMargin), Math.max(mInsets.bottom, bottomMargin));
}
private void calculateTaskSize(Resources res) {
int overviewMinNextPrevSize =
res.getDimensionPixelSize(R.dimen.overview_minimum_next_prev_size);
float overviewMaxScale = res.getFloat(R.dimen.overview_max_scale);
Rect containerRect = new Rect();
if (isTablet) {
containerRect.set(overviewGridRect);
} else {
int taskMargin = overviewTaskMarginPx;
containerRect.set(0, 0, widthPx, heightPx);
containerRect.inset(mInsets.left, mInsets.top, mInsets.right, mInsets.bottom);
int minimumHorizontalPadding = overviewMinNextPrevSize + taskMargin;
containerRect.inset(minimumHorizontalPadding, overviewTaskThumbnailTopMarginPx,
minimumHorizontalPadding, getOverviewActionsClaimedSpace());
}
float scale = Math.min(
containerRect.width() / taskDimension.x,
containerRect.height() / taskDimension.y);
scale = Math.min(scale, overviewMaxScale);
int outWidth = Math.round(scale * taskDimension.x);
int outHeight = Math.round(scale * taskDimension.y);
Gravity.apply(Gravity.CENTER, outWidth, outHeight, containerRect, overviewTaskRect);
}
private void calculateGridTaskSize() {
float rowHeight =
(overviewTaskRect.height() + overviewTaskThumbnailTopMarginPx - overviewRowSpacing)
/ 2f;
float scale = (rowHeight - overviewTaskThumbnailTopMarginPx) / taskDimension.y;
overviewGridTaskDimension.set(
Math.round(scale * taskDimension.x), Math.round(scale * taskDimension.y));
}
/**
* Returns a Rect the size of a grid task with the correct positioning within the screen.
*
* @param isRecentsRtl is true when device is in LTR, false when in RTL, as grid tasks are only
* supported on tablets, which use PortraitPagedViewHandler.
*/
public Rect getOverviewGridTaskRect(boolean isRecentsRtl) {
Rect outRect = new Rect();
int gravity = Gravity.TOP;
gravity |= isRecentsRtl ? Gravity.RIGHT : Gravity.LEFT;
Gravity.apply(gravity, overviewGridTaskDimension.x, overviewGridTaskDimension.y,
overviewTaskRect, outRect);
return outRect;
}
private void calculateModalTaskSize(Resources res) {
float overviewModalMaxScale = res.getFloat(R.dimen.overview_modal_max_scale);
Rect potentialTaskRect = new Rect(0, 0, widthPx, heightPx);
potentialTaskRect.inset(mInsets.left, mInsets.top, mInsets.right, mInsets.bottom);
int minimumHorizontalPadding = Math.round(
(availableWidthPx - overviewTaskRect.width() * overviewModalMaxScale) / 2);
potentialTaskRect.inset(
minimumHorizontalPadding,
overviewTaskMarginPx,
minimumHorizontalPadding,
heightPx - overviewTaskRect.bottom - mInsets.bottom);
float scale = Math.min(
potentialTaskRect.width() / taskDimension.x,
potentialTaskRect.height() / taskDimension.y);
int outWidth = Math.round(scale * taskDimension.x);
int outHeight = Math.round(scale * taskDimension.y);
Gravity.apply(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM, outWidth, outHeight,
potentialTaskRect, overviewModalTaskRect);
}
private void getTaskDimension() {
float taskHeight = heightPx;
if (isTablet) {
taskHeight -= taskbarSize;
}
taskDimension.set(widthPx, taskHeight);
}
/**
@@ -1245,7 +1354,8 @@ public class DeviceProfile {
}
// LINT.IfChange
public void dump(String prefix, PrintWriter writer) {
/** Dumps various DeviceProfile variables to the specified writer. */
public void dump(Context context, String prefix, PrintWriter writer) {
writer.println(prefix + "DeviceProfile:");
writer.println(prefix + "\t1 dp = " + mMetrics.density + " px");
@@ -1291,9 +1401,12 @@ public class DeviceProfile {
cellLayoutBorderSpacePx.x));
writer.println(prefix + pxToDpStr("cellLayoutBorderSpacePx Vertical",
cellLayoutBorderSpacePx.y));
writer.println(prefix + pxToDpStr("cellLayoutPaddingPx.left", cellLayoutPaddingPx.left));
writer.println(prefix + pxToDpStr("cellLayoutPaddingPx.top", cellLayoutPaddingPx.top));
writer.println(prefix + pxToDpStr("cellLayoutPaddingPx.right", cellLayoutPaddingPx.right));
writer.println(
prefix + pxToDpStr("cellLayoutPaddingPx.left", cellLayoutPaddingPx.left));
writer.println(
prefix + pxToDpStr("cellLayoutPaddingPx.top", cellLayoutPaddingPx.top));
writer.println(
prefix + pxToDpStr("cellLayoutPaddingPx.right", cellLayoutPaddingPx.right));
writer.println(
prefix + pxToDpStr("cellLayoutPaddingPx.bottom", cellLayoutPaddingPx.bottom));
@@ -1327,13 +1440,15 @@ public class DeviceProfile {
writer.println(prefix + pxToDpStr("allAppsBorderSpacePxX", allAppsBorderSpacePx.x));
writer.println(prefix + pxToDpStr("allAppsBorderSpacePxY", allAppsBorderSpacePx.y));
writer.println(prefix + "\tnumShownAllAppsColumns: " + numShownAllAppsColumns);
writer.println(prefix + pxToDpStr("allAppsLeftRightPadding", allAppsLeftRightPadding));
writer.println(
prefix + pxToDpStr("allAppsLeftRightPadding", allAppsLeftRightPadding));
writer.println(prefix + pxToDpStr("allAppsLeftRightMargin", allAppsLeftRightMargin));
writer.println(prefix + pxToDpStr("hotseatBarSizePx", hotseatBarSizePx));
writer.println(prefix + "\tinv.hotseatColumnSpan: " + inv.hotseatColumnSpan[mTypeIndex]);
writer.println(prefix + pxToDpStr("hotseatCellHeightPx", hotseatCellHeightPx));
writer.println(prefix + pxToDpStr("hotseatBarBottomSpacePx", hotseatBarBottomSpacePx));
writer.println(
prefix + pxToDpStr("hotseatBarBottomSpacePx", hotseatBarBottomSpacePx));
writer.println(prefix + pxToDpStr("hotseatBarSidePaddingStartPx",
hotseatBarSidePaddingStartPx));
writer.println(prefix + pxToDpStr("hotseatBarSidePaddingEndPx",
@@ -1344,9 +1459,12 @@ public class DeviceProfile {
writer.println(prefix + pxToDpStr("springLoadedHotseatBarTopMarginPx",
springLoadedHotseatBarTopMarginPx));
writer.println(prefix + pxToDpStr("mHotseatBarPadding.top", mHotseatBarPadding.top));
writer.println(prefix + pxToDpStr("mHotseatBarPadding.bottom", mHotseatBarPadding.bottom));
writer.println(prefix + pxToDpStr("mHotseatBarPadding.left", mHotseatBarPadding.left));
writer.println(prefix + pxToDpStr("mHotseatBarPadding.right", mHotseatBarPadding.right));
writer.println(
prefix + pxToDpStr("mHotseatBarPadding.bottom", mHotseatBarPadding.bottom));
writer.println(
prefix + pxToDpStr("mHotseatBarPadding.left", mHotseatBarPadding.left));
writer.println(
prefix + pxToDpStr("mHotseatBarPadding.right", mHotseatBarPadding.right));
writer.println(prefix + "\tnumShownHotseatIcons: " + numShownHotseatIcons);
writer.println(prefix + pxToDpStr("hotseatBorderSpace", hotseatBorderSpace));
writer.println(prefix + "\tisQsbInline: " + isQsbInline);
@@ -1361,12 +1479,14 @@ public class DeviceProfile {
writer.println(prefix + pxToDpStr("workspacePadding.left", workspacePadding.left));
writer.println(prefix + pxToDpStr("workspacePadding.top", workspacePadding.top));
writer.println(prefix + pxToDpStr("workspacePadding.right", workspacePadding.right));
writer.println(prefix + pxToDpStr("workspacePadding.bottom", workspacePadding.bottom));
writer.println(
prefix + pxToDpStr("workspacePadding.bottom", workspacePadding.bottom));
writer.println(prefix + pxToDpStr("iconScale", iconScale));
writer.println(prefix + pxToDpStr("cellScaleToFit ", cellScaleToFit));
writer.println(prefix + pxToDpStr("extraSpace", extraSpace));
writer.println(prefix + pxToDpStr("unscaled extraSpace", extraSpace / iconScale));
writer.println(
prefix + pxToDpStr("unscaled extraSpace", extraSpace / iconScale));
if (inv.devicePaddings != null) {
int unscaledExtraSpace = (int) (extraSpace / iconScale);
@@ -1377,7 +1497,8 @@ public class DeviceProfile {
writer.println(prefix + pxToDpStr("workspaceBottomPadding", workspaceBottomPadding));
writer.println(prefix + pxToDpStr("overviewTaskMarginPx", overviewTaskMarginPx));
writer.println(prefix + pxToDpStr("overviewTaskMarginGridPx", overviewTaskMarginGridPx));
writer.println(
prefix + pxToDpStr("overviewTaskMarginGridPx", overviewTaskMarginGridPx));
writer.println(prefix + pxToDpStr("overviewTaskIconSizePx", overviewTaskIconSizePx));
writer.println(prefix + pxToDpStr("overviewTaskIconDrawableSizePx",
overviewTaskIconDrawableSizePx));
@@ -1395,21 +1516,64 @@ public class DeviceProfile {
writer.println(prefix + pxToDpStr("overviewRowSpacing", overviewRowSpacing));
writer.println(prefix + pxToDpStr("overviewGridSideMargin", overviewGridSideMargin));
writer.println(prefix + pxToDpStr("dropTargetBarTopMarginPx", dropTargetBarTopMarginPx));
writer.println(
prefix + pxToDpStr("dropTargetBarTopMarginPx", dropTargetBarTopMarginPx));
writer.println(prefix + pxToDpStr("dropTargetBarSizePx", dropTargetBarSizePx));
writer.println(
prefix + pxToDpStr("dropTargetBarBottomMarginPx", dropTargetBarBottomMarginPx));
writer.println(prefix
+ pxToDpStr("dropTargetBarBottomMarginPx", dropTargetBarBottomMarginPx));
writer.println(
prefix + pxToDpStr("workspaceSpringLoadShrunkTop", mWorkspaceSpringLoadShrunkTop));
writer.println(prefix
+ pxToDpStr("workspaceSpringLoadShrunkTop", mWorkspaceSpringLoadShrunkTop));
writer.println(prefix + pxToDpStr("workspaceSpringLoadShrunkBottom",
mWorkspaceSpringLoadShrunkBottom));
writer.println(prefix + pxToDpStr("workspaceSpringLoadedMinNextPageVisiblePx",
workspaceSpringLoadedMinNextPageVisiblePx));
writer.println(
prefix + pxToDpStr("getWorkspaceSpringLoadScale()", getWorkspaceSpringLoadScale()));
writer.println(prefix
+ pxToDpStr("getWorkspaceSpringLoadScale()", getWorkspaceSpringLoadScale()));
writer.println(prefix + pxToDpStr("getCellLayoutHeight()", getCellLayoutHeight()));
writer.println(prefix + pxToDpStr("getCellLayoutWidth()", getCellLayoutWidth()));
writer.println(prefix + pxToDpStr("overviewGridRect.left", overviewGridRect.left));
writer.println(prefix + pxToDpStr("overviewGridRect.top", overviewGridRect.top));
writer.println(prefix + pxToDpStr("overviewGridRect.right", overviewGridRect.right));
writer.println(prefix
+ pxToDpStr("overviewGridRect.bottom", overviewGridRect.bottom));
writer.println(prefix + pxToDpStr("taskDimension.x", taskDimension.x));
writer.println(prefix + pxToDpStr("taskDimension.y", taskDimension.y));
writer.println(prefix + pxToDpStr("overviewTaskRect.left", overviewTaskRect.left));
writer.println(prefix + pxToDpStr("overviewTaskRect.top", overviewTaskRect.top));
writer.println(prefix + pxToDpStr("overviewTaskRect.right", overviewTaskRect.right));
writer.println(prefix
+ pxToDpStr("overviewTaskRect.bottom", overviewTaskRect.bottom));
writer.println(prefix
+ pxToDpStr("overviewGridTaskDimension.x", overviewGridTaskDimension.x));
writer.println(prefix
+ pxToDpStr("overviewGridTaskDimension.y", overviewGridTaskDimension.y));
writer.println(prefix
+ pxToDpStr("overviewModalTaskRect.left", overviewModalTaskRect.left));
writer.println(prefix
+ pxToDpStr("overviewModalTaskRect.top", overviewModalTaskRect.top));
writer.println(prefix
+ pxToDpStr("overviewModalTaskRect.right", overviewModalTaskRect.right));
writer.println(prefix
+ pxToDpStr("overviewModalTaskRect.bottom", overviewModalTaskRect.bottom));
boolean isRecentsRtl =
PortraitPagedViewHandler.PORTRAIT.getRecentsRtlSetting(context.getResources());
writer.println(prefix
+ pxToDpStr("getOverviewGridTaskRect(" + isRecentsRtl + ").left",
getOverviewGridTaskRect(isRecentsRtl).left));
writer.println(prefix
+ pxToDpStr("getOverviewGridTaskRect(" + isRecentsRtl + ").top",
getOverviewGridTaskRect(isRecentsRtl).top));
writer.println(prefix
+ pxToDpStr("getOverviewGridTaskRect(" + isRecentsRtl + ").right",
getOverviewGridTaskRect(isRecentsRtl).right));
writer.println(prefix
+ pxToDpStr("getOverviewGridTaskRect(" + isRecentsRtl + ").bottom",
getOverviewGridTaskRect(isRecentsRtl).bottom));
writer.println(
prefix + pxToDpStr("overviewTaskWorkspaceScale", overviewTaskWorkspaceScale));
writer.println(prefix + pxToDpStr("overviewModalTaskScale", overviewModalTaskScale));
}
// LINT.ThenChange(
// packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfilePhoneTest.kt,